Yes, I would simple split the batch, one for the sequences and one for the static features. You only need to ensure that the batch sizes are the same…obviously :).
Say you have a batch of sequences seq_batch with a shape (batch_size, seq_len) and a batch of static features (batch_size, feature_dim), your forward() method might look like this:
def forward(seq_batch, static_batch):
    # Handle sequences
    X1 = self.embedding(seq_batch) # I assume you deal with text
    # X1.shape = (batch_size, seq_len, embed_dim)
    output, (h, c) = self.lstm(X1, self.hidden)
    X1 = h[-1] # I assume unidirectional LSTM to keep example simple
    # X1. shape = (batch_size, embed_dim)
    # Handle static features
    X2 = self.fc1(static batch) # or more linear layers
    # X2.shape = (batch_size, output_dim_fc1)
    X = torch.concat([X1, X2], dim=1)
    # X.shape = (batch_size, (embed_dim+output_dim_fc1) )
    X = self.fc2(X) # or more linear layers
    # X.shape = (batch_size, output_dim_fc2)
    # Last layers to get the right output for your loss
    ...

If you use multiple linear layers in sequence, you need of course some activation functions. I also omitted any Dropout or BatchNorm layers, etc. to keep it simple.