RNNs provided by common frameworks really do give a matrix back (examples [0, 1]). They're about as stateful as any other object or generator function.
[0]: https://pytorch.org/docs/stable/generated/torch.nn.RNN.html
[1]: https://docs.nvidia.com/deeplearning/cudnn/api/index.html#cu...