Eight-Person Rotating Partners Tennis Tournament

I think this is a fairly common doubles tennis tournament scenario: you have eight players, and you want each to have each of the other seven players as partner once for a set or group of games. It would also be fairest for each player to have each of the other players as an opponent twice. It isn't immediately clear to me how to do this or even if it is possible, but thanks to a "brute-force" (computer) program I wrote, I can say it is possible and here is one procedure that works (players numbered 1-8):

First set: 12 v 34, 56 v 78 Second set: 13 v 57, 24 v 68 Third set: 14 v 58, 23 v 67 Fourth set: 15 v 26, 37 v 48 Fifth set: 16 v 38, 25 v 47 Sixth set: 17 v 46, 28 v 35 Seventh set: 18 v 27, 36 v 45
Some of the thoughts on the way to this result: First, how many ways are there to arrange the players in one particular set? If we number the eight spots on the two courts 1-8 and assign players to them you can say there are 8! = 40320 ways to assign the players for this set. But we don't really care to assign the left/right position of each player on each side of the net, or even which side of the net teams are on, or which of the 2 courts each foursome is on. So 8! overcounts by a factor of 16 for the left/right assigment, 4 for the side of net assignment, and 2 for the court assignment, i.e. we should divide the 40320 by 128, giving 315.

Now there are binomial co-efficient (315 over 7), or 57,093,827,594,310 selections from these 315 set-lineups for a 7-set tournament (considering the order of the sets to not be relevant). Of these, apparently 720 meet the requirements (each as partner once, each as opponent twice), one of which I show above.