I've read all the suggestions as they were posted, but I don't think the following ideas have been brought up--sorry if I repeat an idea.
Idea 1:
Most larger players won't mind a delay of a few weeks to join an alliance, but often smaller players do feel an urgency to join alliances and are the main source of new players for a number of alliances. The GMs could always set the leagues and then set the restriction so that any player under 1,000 total population (or some other number) can still join the participating alliances but larger players can only leave alliances for the duration of the tournament.
Generally, players less than 1,000 population aren't going to change the outcome of a tournament that much except in the smallest leagues (like alliances of only 1 or 2 players). Perhaps the smallest leagues would have an even lower restriction, like only 400 population or less players can join during the tournament.
If this idea is used, though, the players should be given a day or two to switch or join alliances and then the leagues will be re-set and remain unchanging throughout the tournament even if players leave.
Idea 2:
Allow players to freely join and leave alliances throughout most of the tournament, and allow the alliances to move up or down in league category as players join and leave alliances and increase or decrease their population. Then, 5 to 7 days before the end, freeze the alliances' league and only allow players to leave an alliance (or combine with my first idea). This will prevent alliances from deciding they have no chance in their current league, so they drop all of their members at the last moment so they can win in a lower league (and then take their members back after the tournament ends).
I think Idea #1 is less exploitable, but I may be overlooking something.