I agree; also I'd add that rather than broadcasting the DM on multiple relays the user should have only 1 selected (in their NIP-0) for recieving messages to. PUSH only, don't store the content on the server after it has been recieved (like Whatsapp, not like telegram). Making it economic to host these relays for free.
Discussion
Also I'd add, allow a binary node to node Noise communication protocol (even Wireguard is fine), so I can message someone via my own node who forwards it on to their selected node on my behalf. So I don't leak IP metadata when communicating to someone on a unique node. It can be done without Noise/binary but it considerably improves scalability to do it this way. Can be simple still - super simple but scalable would be Wiregard + BSON (binary json)