Cause: There are too many Valve implemented factors segregating queues and as a result the games take a long time to find and the match finder often struggles to put together games that are overall balanced.
The goal: improving match quality and reducing queue times/making them more manageable for players. Match quality being 'good' would ideally involve everyone being within 300-500 mmr of each other in any given game.
What would improve and solve these issues? Implementing a bracketed matchmaking system.
Right now there are 8 badges ranging from Herald to Immortal with 5 ranks within each badge. Every badge ranges approximately 770 mmr (look at the mmr at the next badge to see when you obtain it) except for Divine which is 800 mmr, and Immortal which scales upwards from that.This means that each rank is worth approximately 154 mmr.
If you were to cut down the number of ranks in a bit over half so instead of there being ranks 1-5 there were only ranks 1-2 before you reached a new badge you would increase the amount of mmr in each badge from 154 to 385.
The next step is to try and force the matchmaker to only put together games grabbing players within that singular rank without care for their actual mmr (players who lose below a rank drop back down as far as this is concerned).
The disparity of 385 is small enough to not worry about matching exact mmrs or average mmrs because on a big enough scale the number of games where one team is a good bit higher or a good bit lower will average out and make no difference.
This would drastically reduce queue times because it would no longer try to find games where the exact average mmr would be exactly equal, which is what is creating extremely mismatched games to begin with. Right now you'll often find games with an ancient 1 playing with divine 5s, which is approximately a 1500 mmr difference, or other games where a divine 2 can play with a rank 7, which is 9k mmr versus 4.8k which is literally a 4k mmr difference.
These games are thrown together because the system is trying to reach an equal average mmr and throws in an extreme high or an extreme low player to even it out. Which is simply unacceptable as far as match quality is concerned.
This system could also work in the immortal badge range where brackets are implemented on a different scale (instead of every 380 mmr) but instead on a broader range, like around 500 mmr. And in instances where a player can't be found to fit a certain role within that bracket it would simply look for players in the closest bracket (one up or one down) to fill that spot but also consider how close their mmr is to that bracket (aka if a bracket is 380 mmr and the next bracket is 5k it will take the closest to 5k as opposed to a 4.7k player)
The second thing to add would be a visual Live Queue Statistics tab to show players how many people are queuing within their bracket, and what roles they are queuing. This would be especially helpful for the upper immortal brackets to judge how their game quality would look, or for lower ones to determine what roles are needed to get games started.