For matrix specifically, I recommend fluffy chat on mobile and cinny for web/desktop. Most notably, they both support the not-yet-official spec on custom emojis and stickers, which I think is important for any slack-like.
For the server (since you want to self host), you’d probably want to do Synapse - it supports not being federated as well as SSO. Also it wasn’t mentioned by mp3, but xmpp is another protocol that’s used by many large companies for internal chat systems as well.
I’ve recently found out about https://search.marginalia.nu and want to start using it.