At our table, we often have some of the players handling some of the monsters. They usually don't handle main villains, but anything else is fair game.
So in a 3E game, we had a climatic encounter where the arch villain, a lich with possession powers, tried to take over party members slowly. It went bad, and ran uncontrollably. The net affect was that every round, a random creature swapped minds with another random creature. If those creatures failed Will saves, they immediately swapped again with another random creature. This went on until the saves were made.
I had character sheets printed up for all the foes and NPC allies. We swapped sheets. It was an insane fight, but lots of fun. Timing was really important. Both sides wanted to kill a foe while it inhabited a foes' body (not necessarily its own). Except the lich didn't care. As long as she ended up with a functioning body, she was ready to go. The fight was deliberately a bit underpowered (without the swapping), but the swapping made it tough. It helps that I can trust the players to handle control of a foe, played to the hilt.
That is a lot more zany than what you are proposing. But my suggestion is to set up a foreshadowing encounter where the swaps happen as you envision, but only for that encounter. Make it a zone or ritual or something that wears off. Then if everyone likes it, you can reintroduce it for a whole session later.