There is no simple formula that will solve all these scheduling problems - it is more a case of building solutions for specific problems.
It's not a problem to balance the 16 players so that they play with each other on the same team exactly once - the issue is that you can't also balance the opposition. For example this is about the best that can be done:
(15 10 13 3 v 1 2 16 11) (12 8 6 5 v 14 7 9 4)
( 2 8 10 14 v 4 5 13 16) (11 12 7 3 v 1 9 15 6)
(12 13 1 14 v 4 6 11 10) ( 2 5 3 9 v 16 15 7 8)
(14 15 5 11 v 6 13 7 2) ( 8 1 3 4 v 10 16 9 12)
(12 4 2 15 v 6 14 3 16) ( 5 10 7 1 v 11 8 9 13)
within teams the balance is perfect, however any player has 3 other players who they never oppose, and 2 other players who they oppose 3 times. For example player 1 never opposes 2, 5 or 14, but opposes 10 & 11 three times. So the kid who never opposes one of the best players and opposes a weaker player three times, has an unfair advantage.