Here is the 24 competitor schedule.
( 4 22 2 12 6 18) (20 3 8 1 17 9) ( 5 13 15 23 16 19) (24 10 11 21 7 14)
( 5 23 3 10 4 16) (21 1 9 2 18 7) ( 6 14 13 24 17 20) (22 11 12 19 8 15)
( 6 24 1 11 5 17) (19 2 7 3 16 8) ( 4 15 14 22 18 21) (23 12 10 20 9 13)
(17 11 19 12 20 18) (10 5 15 2 7 6) (22 9 13 3 14 16) ( 8 23 24 4 21 1)
(18 12 20 10 21 16) (11 6 13 3 8 4) (23 7 14 1 15 17) ( 9 24 22 5 19 2)
(16 10 21 11 19 17) (12 4 14 1 9 5) (24 8 15 2 13 18) ( 7 22 23 6 20 3)
( 1 13 21 15 6 16) (23 17 22 5 18 8) ( 9 10 3 14 11 2) ( 4 19 24 20 12 7)
( 2 14 19 13 4 17) (24 18 23 6 16 9) ( 7 11 1 15 12 3) ( 5 20 22 21 10 8)
( 3 15 20 14 5 18) (22 16 24 4 17 7) ( 8 12 2 13 10 1) ( 6 21 23 19 11 9)
( 5 14 12 8 16 6) (15 23 11 20 2 4) ( 1 3 24 18 10 19) (21 13 7 9 17 22)
( 6 15 10 9 17 4) (13 24 12 21 3 5) ( 2 1 22 16 11 20) (19 14 8 7 18 23)
( 4 13 11 7 18 5) (14 22 10 19 1 6) ( 3 2 23 17 12 21) (20 15 9 8 16 24)
There is no easy algorithm that is going to solve the general case. But perhaps if you tried assigning each round at random and then exchanging pairs of competitors between groups to improve the pairwise balance, this would give you a reasonable schedule.
Here are the other two schedules. The three schedules also have some positional balance, so if a heat is (a b c d e), then each competitor will be spread as evenly as possible over the 5 positions a to e, this may be of some use if there is a specific starting order for each heat, or competitors are assigned lanes.
15 competitors, 21 rounds, players compete with each other 6 times each.
r1 (15 11 10 4 14) (2 13 12 7 8) (9 3 1 6 5)
r2 (12 5 14 10 6) (4 1 9 13 7) (8 3 11 15 2)
r3 (4 8 11 14 1) (5 9 12 3 13) (6 7 10 2 15)
r4 (13 6 15 12 11) (14 5 2 4 10) (7 1 3 9 8)
r5 (13 10 8 6 3) (1 11 4 7 2) (14 9 5 12 15)
r6 (10 14 13 8 2) (6 4 3 12 9) (7 15 1 5 11)
r7 (14 13 3 1 7) (11 6 4 9 10) (2 12 8 15 5)
r8 (9 6 2 3 15) (12 14 10 1 13) (11 5 7 4 8)
r9 (5 12 3 8 4) (10 11 9 2 14) (15 6 1 7 13)
r10 (3 2 9 14 7) (6 13 4 11 8) (5 1 15 10 12)
r11 (1 14 2 6 12) (4 15 7 3 10) (5 8 13 9 11)
r12 (11 7 14 12 6) (3 4 5 15 13) (1 8 2 10 9)
r13 (6 9 7 8 14) (11 10 13 5 3) (15 4 12 1 2)
r14 (12 8 9 10 7) (14 15 3 4 6) (1 2 5 13 11)
r15 (13 7 6 14 5) (9 4 15 8 10) (3 12 11 2 1)
r16 (8 3 14 1 15) (2 11 5 6 9) (7 12 10 13 4)
r17 (2 7 6 5 4) (13 1 10 15 9) (8 12 14 11 3)
r18 (12 4 6 8 1) (9 15 11 13 14) (10 5 7 3 2)
r19 (7 15 12 9 11) (13 2 4 14 3) (6 10 8 5 1)
r20 (10 3 6 11 1) (15 14 8 7 5) (4 2 13 9 12)
r21 (5 9 1 14 4) (8 13 15 2 6) (3 10 7 11 12)
20 competitors, 19 rounds, players compete with each other 4 times each.
r1 (1 18 2 20 5) (7 11 15 17 8) (4 14 13 16 3) (19 9 12 6 10)
r2 (11 6 20 18 16) (19 2 17 14 9) (10 8 4 3 1) (12 7 5 15 13)
r3 (14 20 8 5 11) (18 3 17 2 15) (10 4 6 13 9) (7 12 1 16 19)
r4 (14 19 18 13 20) (9 6 7 17 11) (12 15 8 1 4) (16 10 5 2 3)
r5 (4 2 14 8 9) (20 15 13 11 10) (16 12 17 19 3) (5 7 18 1 6)
r6 (14 1 17 15 20) (8 16 2 11 18) (6 4 19 12 13) (9 7 10 3 5)
r7 (2 18 7 4 1) (3 8 15 10 12) (19 6 11 14 5) (17 20 16 9 13)
r8 (9 4 15 5 20) (17 1 19 7 3) (6 16 2 11 12) (14 10 13 8 18)
r9 (13 15 1 19 11) (18 17 12 4 20) (5 3 6 8 14) (2 9 10 7 16)
r10 (2 5 6 1 4) (17 16 10 14 15) (7 8 13 18 19) (11 20 9 3 12)
r11 (20 14 3 4 7) (15 11 19 10 2) (6 12 16 18 8) (17 5 9 1 13)
r12 (10 1 14 17 6) (11 8 3 19 5) (16 4 9 15 18) (20 13 7 2 12)
r13 (5 17 4 12 11) (15 3 20 6 2) (13 1 9 16 8) (18 10 19 14 7)
r14 (15 19 16 5 4) (3 14 18 12 9) (8 17 7 20 6) (1 10 11 13 2)
r15 (3 11 4 13 7) (8 9 20 2 19) (18 5 12 10 17) (1 15 16 6 14)
r16 (6 19 20 4 10) (16 13 5 8 17) (12 2 14 7 15) (3 9 18 11 1)
r17 (4 16 11 7 14) (1 12 8 20 10) (13 3 2 6 17) (5 18 15 9 19)
r18 (20 19 1 3 16) (15 7 6 9 8) (11 17 10 18 4) (2 13 12 5 14)
r19 (12 14 11 9 1) (13 6 3 15 18) (8 2 4 19 17) (10 20 5 16 7)