While I agree with your pain points, I would not say XMPP that the protocol isn't any good.
- Pidgin: Just take a look at their bug tracker. You will not have any problems finding tickets requesting essential features which are 6 years and older (e.g. Message Archive Management). So unless the Pidgin devs get some done I would not use their client (Gajim is a much better alternative, especially since the 1.0 release last year).
- ejabberd OMEMO: Actually, I don't know what the ejabberd devs were thinking when they changed their default config to disable OMEMO. They told something about having a hard time tracking down issues with OMEMO enabled. Well, kinda makes sense from a developers perspective, but given the fact that OMEMO is end-to-end encryption, I wonder what they were expecting. Nevertheless, disabling OMEMO by default on the server is just a stupid idea.
- message delivery: I had problems with that too, but ultimately it was just a problem with some ejabberd setting (I think it was mod_stream_mgmt: resend_on_timeout: if_offline) [1].
[1] https://docs.ejabberd.im/admin/configuration/#mod-stream-mgm...