Also, a goofy idea....GMs have to specify the year of the player we are picking, and each player can be chosen for only three years of their career....so three of us get Gretzky, one gets 81-82, another gets 83-84, and whoever takes his 3rd year has to choose between 84-85 and 85-86 (73 goals, or 163 assists). Also, do you take one of those over Mario 88-89? Would be a ton tougher to track, and would likely have to limit each team to one year of each player.
Or could do a draft of each block of years...figure out how many players we have, and how many years we want to cover (say 10 GMs and 60 years, 1960-2020). Random the order for the first 6 year block (season ending 1960-1966)and everyone has to pick from that period. After that round, pick order for 2nd round (1967-1972) is shifted by one...whoever picked 2nd in round one now picks first, and R1P1 picks R2P10. Each GM picks progressively earlier each round, until they have picked first for a round, then they get shifted to last pick. We adjust the number of years based on number of GMs (55 years turns into 11 5 year blocks, 9 GMs means 7 year blocks, etc.). No need to make a full 20-23 person roster. or could do each block of years as a snake with two picks per team, and keep the rotation, and add that one player on a team twice from the same period, but from different periods is fine. This would likely get confusing as well.
Straight up, 1967-2019, normal snake draft, 23 roster slots is the easiest.