Maybe the Nostr protocol isn’t suited for sending direct messages? There are other protocols that are designed for it (e.g. Signal, SimpleX). Why does Nostr have to do it? Just because it’s a Twitter feature?
Discussion
The "Nostr protocol" is just an asynchronous relayer of signed content. I wouldn't call this "not suited" for direct messages.
Maybe the current implementation of DMs is not perfect, but that has nothing to do with the protocol.
If Nostr is suited for DMs, then hiding DM metadata from the public should be simple to do. What's the solution?