This is known as a bipartite tournament and can be made using Latin squares. For example:
(A7 B3) (A2 B8) (A5 B4) (A6 B7) (A1 B1) (A4 B2) (A8 B6) (A3 B5)
(A3 B4) (A5 B5) (A2 B3) (A4 B6) (A8 B2) (A6 B1) (A1 B7) (A7 B8)
(A1 B5) (A6 B4) (A4 B8) (A2 B2) (A7 B6) (A5 B7) (A3 B1) (A8 B3)
(A6 B2) (A1 B6) (A8 B1) (A7 B5) (A2 B4) (A3 B3) (A5 B8) (A4 B7)
(A5 B6) (A3 B2) (A7 B7) (A8 B4) (A4 B5) (A1 B8) (A6 B3) (A2 B1)
(A8 B8) (A4 B3) (A6 B5) (A5 B1) (A3 B7) (A2 B6) (A7 B2) (A1 B4)
(A2 B7) (A7 B1) (A3 B6) (A1 B3) (A6 B8) (A8 B5) (A4 B4) (A5 B2)
(A4 B1) (A8 B7) (A1 B2) (A3 B8) (A5 B3) (A7 B4) (A2 B5) (A6 B6)
All 8 members of pool A and pool B appear exactly once in each row and once in each round, because of this symmetry you can assign rows and columns to be rounds and activities either way around.