Assuming that you store created heroes into a variable, you can make a trigger that runs every second, and checks if playing players already have their hero. If yes, then turn the hero-selection trigger off.
Events
Every 1 seconds of the game
Conditions
Action
Set Counter = 0
For each integer from 1 to 12
If
-Player(Integer A) is playing equal to false OR HeroChosen[Integer A] is not equal to (No unit)
Then
-Set Counter = Counter + 1
If
-Counter is equal to 12
Then
-Turn off (HeroSelection)
-Turn off (This trigger)
You see, Counter reaches 12 only if all playing players have a hero.
This was a sudden idea, but I think it should work.