TLDR: SimpleX (https://simplex.chat/) might be the most promising solution to simple, private, decentralized messaging yet!
So far, it does direct messages, group messages, calls, voice messages, and video calls, and everything is e2e-encrypted and can be self-hosted.
Like Nostr, SimpleX is neither P2P nor federated. It uses servers to relay messages. You define which server to use for receiving messages, and your contacts define which server to use for receiving messages. Every conversation is likely to use 2 different servers!
Servers are simple relays adhering to the SMP protocol; they do not store profiles, contacts, or groups, and they only retain messages until they are delivered to clients. Read about the SMP protocol here: github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md
SimpleX was designed with Tor servers in mind, and since servers do not connect to each other, there are no issues with interoperability: simplex.chat/docs/guide/privacy-security.html#using-tor