Have you tried Zulip? I feel like it fixes most of the critiques you have towards IM as it's designed to be primarily used asynchronously.
1) they had no [simple] means to install it on an existing server (VPS, what-have-you). It assumed (required!) that Zulip would be the only thing on whatever you installed it on. That is, it seemed to assume a container environment (docker, etc.)
B) The public Zulip instance exposed everyone's email address in plain text, ready for easy harvesting.
iii) It's hard to alter the inertia of a team or organization of sufficient size that is already using Slack.
3) Zulip do support importing from Slack. https://zulipchat.com/help/import-from-slack. I don't think there is anything else we can do about this issue.