There's a number of factors and a number of designs that might make it necessary or might determine ways to avoid it. The only person who could really answer this is probably a riot developer who actually knows how the web interface is coded.
The easiest solution to this would be to move the pre-game to the client rather than the launcher. That way everyone would be connected. However, this might not be possible, depending on how the client currently functions. E.g. If the client is built using the choices that the players make in the pre-game lobby... In which case, being in a game that doesn't have an
means that the client has no data, related to Ashe.
If it comes down to the launcher/client split that they have. Where as a game like HotS (i'm not familiar with overwatch) only has a client.
There's not really a "best" way to do this, each has it's benefits and disadvantages. Riot's design is probably better suited for low spec computers, but bottlenecks high spec computers. Where as other designs allow high spec computers to run at full speed, and just wait until the low spec computers catch up.
That said, I can't be sure of this (without doing some digging), because how it's designed, a slow computer is indistinguishable from a slow internet to us. Both a fast computer with slow internet and a slow computer with fast internet would likely have higher load times, but there's a good amount that goes on behind the scenes that we just don't get to see.
For all I know, the client is statically defined (e.g. all the models of champions that aren't even in your game are loaded into the game client) and the load time is just waiting to start the clock until the last player has successfully connected to the server.