Here is a schedule for 33 weeks, where all pairs of players partner exactly twice and oppose each other exactly four times.
Because of the way it is constructed there will be players who have consecutive byes, so if you use it then it would be best to randomize the order of the rows. It is also possible that the same partnership occurs in consecutive weeks (for example 1 & 4 below), so it would be prudent to tweak the order of play to try to minimize that.
match 1 match 2 byes
( 5 10 v 1 4) ( 3 6 v 2 11) ( 9 12 7 8)
( 6 11 v 2 5) ( 1 4 v 3 12) ( 7 10 8 9)
( 4 12 v 3 6) ( 2 5 v 1 10) ( 8 11 9 7)
( 2 11 v 8 4) ( 1 6 v 3 7) ( 5 12 9 10)
( 3 12 v 9 5) ( 2 4 v 1 8) ( 6 10 7 11)
( 1 10 v 7 6) ( 3 5 v 2 9) ( 4 11 8 12)
( 4 9 v 12 1) ( 7 2 v 3 10) ( 8 6 5 11)
( 5 7 v 10 2) ( 8 3 v 1 11) ( 9 4 6 12)
( 6 8 v 11 3) ( 9 1 v 2 12) ( 7 5 4 10)
( 8 5 v 6 9) (12 2 v 11 10) ( 4 3 7 1)
( 9 6 v 4 7) (10 3 v 12 11) ( 5 1 8 2)
( 7 4 v 5 8) (11 1 v 10 12) ( 6 2 9 3)
( 7 1 v 4 6) ( 8 9 v 11 3) ( 2 5 12 10)
( 8 2 v 5 4) ( 9 7 v 12 1) ( 3 6 10 11)
( 9 3 v 6 5) ( 7 8 v 10 2) ( 1 4 11 12)
(11 9 v 7 1) (10 4 v 12 6) ( 2 3 8 5)
(12 7 v 8 2) (11 5 v 10 4) ( 3 1 9 6)
(10 8 v 9 3) (12 6 v 11 5) ( 1 2 7 4)
( 1 3 v 7 8) ( 4 2 v 9 12) ( 6 11 5 10)
( 2 1 v 8 9) ( 5 3 v 7 10) ( 4 12 6 11)
( 3 2 v 9 7) ( 6 1 v 8 11) ( 5 10 4 12)
(10 9 v 8 4) (12 7 v 5 6) ( 1 3 11 2)
(11 7 v 9 5) (10 8 v 6 4) ( 2 1 12 3)
(12 8 v 7 6) (11 9 v 4 5) ( 3 2 10 1)
( 8 12 v 5 7) ( 3 4 v 6 2) (10 1 9 11)
( 9 10 v 6 8) ( 1 5 v 4 3) (11 2 7 12)
( 7 11 v 4 9) ( 2 6 v 5 1) (12 3 8 10)
( 5 12 v 8 1) ( 4 11 v 10 7) ( 2 9 3 6)
( 6 10 v 9 2) ( 5 12 v 11 8) ( 3 7 1 4)
( 4 11 v 7 3) ( 6 10 v 12 9) ( 1 8 2 5)
( 4 12 v 3 2) (10 11 v 9 1) ( 5 6 7 8)
( 5 10 v 1 3) (11 12 v 7 2) ( 6 4 8 9)
( 6 11 v 2 1) (12 10 v 8 3) ( 4 5 9 7)