First Problem: So you want to have 8 players playing 4 games at the same time. Those 4 games should be in separate Multiplayer rooms, so only 2 players are connected.
Second Problem: You still want 8 players not two. So we need a lobby room. For them to come to first, and after their match.
Third Problem: We need to remember who in the lobby we have played against, yet. Since we know everyone has a unique Alias when connecting to a room lets store that. To get around constucts storing stuff between rooms, I would suggest storing it to Local Storage.
Fourth Problem: How do we get back to the lobby Room? Lets store the lobbies info in local storage as well.
Fifth Problem: Grouping, We know what games people have played against each other. So we just have to loop through our players and find the ones that we haven't played with yet by checking each's local storage List of alias, Then set up and join a room with that player. (this part takes the most code work and will kind of suck, as you need to pass info back and forth across the network, which is always a pain.)
I hope this example architecture helps..