Let me start out by saying please don’t hate me.
I got this idea from when Classic switch to TBC. They gave players a choice between choosing Classic era or TBC. This is the basis of my idea.
Option 1: They could split these mega servers into 2-3 servers depending on their size. Have people choose upon logging in to join server 1, 2, or 3. Guilds can discuss on their Discords which of the 2-3 servers to join. You can even name it something like pagle1, pagle2, pagle3 for example. Put a limit on how many people can join each of the servers to stop 1 from becoming a super mega server again.
Option 2: If possible do the same as option 1 but make the 2-3 servers dynamic and as they get full create a new server that you can join (temporarily) and those dynamic servers use the sharding technology of live wow allowing guildies to still see each other and raid as needed between the servers.
If blizzard doesn’t know how to fix the issue maybe you have to do something out of the box like this. Because if a server is literally unplayable then whats the point?