With 8 people in each team. then there is a solution using latin squares
Team A
M1 M2 M3 M4 M5 M6 M7 M8
R1 1 2 3 4 5 6 7 8
R2 2 1 4 3 6 5 8 7
R3 3 4 1 2 7 8 5 6
R4 4 3 2 1 8 7 6 5
R5 5 6 7 8 1 2 3 4
R6 6 5 8 7 2 1 4 3
R7 7 8 5 6 3 4 1 2
R8 8 7 6 5 4 3 2 1
Team B
M1 M2 M3 M4 M5 M6 M7 M8
R1 1 3 5 7 4 2 8 6
R2 2 4 6 8 3 1 7 5
R3 3 1 7 5 2 4 6 8
R4 4 2 8 6 1 3 5 7
R5 5 7 1 3 8 6 4 2
R6 6 8 2 4 7 5 3 1
R7 7 5 3 1 6 8 2 4
R8 8 6 4 2 5 7 1 3
Team C
M1 M2 M3 M4 M5 M6 M7 M8
R1 1 4 7 6 8 5 2 3
R2 2 3 8 5 7 6 1 4
R3 3 2 5 8 6 7 4 1
R4 4 1 6 7 5 8 3 2
R5 5 8 3 2 4 1 6 7
R6 6 7 4 1 3 2 5 8
R7 7 6 1 4 2 3 8 5
R8 8 5 2 3 1 4 7 6
Team D
M1 M2 M3 M4 M5 M6 M7 M8
R1 1 5 4 8 7 3 6 2
R2 2 6 3 7 8 4 5 1
R3 3 7 2 6 5 1 8 4
R4 4 8 1 5 6 2 7 3
R5 5 1 8 4 3 7 2 6
R6 6 2 7 3 4 8 1 5
R7 7 3 6 2 1 5 4 8
R8 8 4 5 1 2 6 3 7
So for example the matches in round 1 would be:
Match 1 Match 2 Match 3
(A1 B1 C1 D1) (A2 B3 C4 D5) (A3 B5 C7 D4) etc...
When you have some teams with less than 8 members, then things will get complicated and I can't see any easy solutions. The only work around would be to use the schedule above and play threesomes whenever the missing eighth player from team D is scheduled to play.
Hope that helps.