If you need a specific list of people engaged in a conversation, you can either:
1) Schedule something in a time slot that works for everyone. Everyone arrives prepared to focus on the conversation and reach a conclusion before returning to work.
2) Ping them in Slack or @channel and try to pry them away from whatever they're working on. Get a mix of half-attention and hurried responses and force your devs to choose whether to continue focusing on their work and risk missing out, or to drop everything and alt-tab over to Slack and try to catch up on the backlog as quick as possible.
Using synchronous comms or e-mail for everything is a mistake, but trying to force everything into asynchronous commons or Slack is just as bad. Know when to use the right tool for each job.
You can get away with a lot of Slack sins in small teams or companies, but try to scale Slack-only communication up to company scale and it's a nightmare. I worked at a company where I would accumulate upwards of 200 (not a typo) Slack notifications every single day because it became a battle ground of people competing for attention and trying to give drive-by input as they rushed on to the next Slack thread. Moving to e-mails forces people to put some minimal thought and prep into organizing their thoughts, which makes all the difference.
> Having multiple different communication buses seems like a problem as well. Possibly a worse one IMO
You have different types of communication. Why would you want to try to force them all into the lowest common denominator medium?
Trying to force everything into Slack is a disaster. Slack is great for real-time, interactive communication. Information has a very short half-life in Slack, though. Once something requires a longer half-life than Slack supports or a more careful handling, you move it to a better medium.