Yes. There's a solution for all of this with IRC, but some of it requires specialised clients, servers running somewhere and some of it requires you to write additional code.
We're in the business of writing code for our core product, not for our internal chat server.
I'm not entirely opposed to writing code for our infrastructure that's not completely product-related but if I can have something that works out of the box for a reasonable amount of money, then I will go that way.
OTOH, when the problem concerns some dependency of the product in any way, then I'm totally willing to go much greater lengths of doing the work on our end than most of other people.
Because every single piece of the puzzle you control fully is a piece you won't have to find a replacement for in a hurry sometime in the future.
But company-internal chat? If Slack breaks (or gets too expensive), there are ton of alternatives all of which would be more or less equal replacements.