What's happening, is that when a sprite is clicked, the system goes, ok whoischoosing = 1, and a sprite was clicked, so now we set whoischoosing = 2. But what the system does RIGHT after that is, oh, the sprite was clicked, and now whoischoosing = 2, so now we set whoischoosing = 3. So then right after that it sees that whoischoosing = 3 and goes to the next layout. That's why it does it all in one click, because every condition you have leads it to the next condition in the code. There are many ways to do it, but the way I would do would be something like:
whoischoosing = 3: go to layout 1
whoischoosing = 2
--sprite1 is clicked: set player2 to sprite1
----------------------set whoischoosing to 3
--sprite2 is clicked: set player2 to sprite2
----------------------set whoischoosing to 3
whoischoosing = 1
--sprite1 is clicked: set player1 to sprite1
----------------------set whoischoosing to 2
--sprite2 is clicked: set player1 to sprite2
----------------------set whoischoosing to 2
...by doing it this way, the system has to check to make sure that whoischoosing doesn't = 2 or 3 before it checks anything else. Because whoischoosing = 1 events are at the bottom, the system has to run a new tick before it can check the whoischoosing = 2 events, and the same goes for whoischoosing = 3.
I hope this helps and wasn't too long winded or hard to understand, if it was, please feel free to PM me and I can try to explain it more clearly :)