Unfortunately I haven't seen your DMs, but Nostr wasn't really designed to do DMs, so I have that excuse.
Now, it can be adapted to do DMs reliably I think, but the implementation is lacking. With an extra 10% implementation effort we could have reached reliable DMs a long time ago, but probably haven't yet because the "let's all agree to use the same hardcoded relays" mentality took hold too much on most developers' minds.
In your analogy the shift required is turning UDP into TCP or something like that (but I don't know if I like the analogy).