If you're talking about production bugs and restaurants and explosions in the same slack channel then the problem is not with slack, it's with the teams communication style.
We have #general and #random channels for these exact conversions. Why can't you create a #restaurants or #explosions channel? Hell, we even have a #giphy channel that is reserved for all gifs. This helps us keep cat gifs out of our important conversions. All of our development communication happens in #engineering or #frontend. We don't experience the problems the author is ranting about at all.
Regarding threads: what happens when the site goes down and suddenly 5 different engineers create a thread about it. Now you have 5 different conversations trying to debug what just went wrong. Do you merge the threads? What happens if you need to split a thread into two conversations? I get that threads are good in certain contexts, but to me it's just more complexity switching between multiple threads.
It's not the tool that's broken. It sounds like the author needs to communicate to others that certain conversations are meant for certain channels, and they need to enforce that rule when it doesn't happen.
However, it's more of a comment thread than a real time chat application. You have to refresh the page to see new updates. Also since there is no where to "hang out," it's hard to talk to someone directly. Sometimes you post and have to @mention three of four groups to find someone to respond.