as for your second point, almost every client sends messages with a plaintext
body attached, if your matrix library only lets you read the formatted body that's the fault of the matrix librarythe last one depends on the homeserver implementation, however some homeservers allow you to retrieve all messages at once, which is of course slow because its every single message from everywhere you are