neuralpat:

If the point is to automatically add a batch, why does it do it batch first?


Yes exactly. The point is that all operations have been defined batch-wise, so iterating dataloader will create batches as actually you have to pass batch_size as argument to the dataloader.
About the second part of question, I am not sure what you mean by batch first. But if you mean that RNN expects [seq, batch, input], then you can just permute dimensions by using tensor.permute(dims).
x = torch.randn(1, 9, 87)
x_for_rnn = x.permute(1, 0, 2)
print(x_for_rnn.shape)   # [9, 1, 87]

But in your first post, you have set batch_first=True for RNN layers, in that case, RNNs expect [batch, seq, input] which matches what dataloader is giving you.
Bests