It still seems like something I would use, honestly. I was thinking of a weird way of coding around it. Once again, theory will probably be proven wrong by fact, but it's an idea.
Dynamic custom characters. A maximum of 4 individual characters can be loaded at a time, so if we set it up so each custom character can be placed over 4 different slots, there will be no conflicts. I am not sure how we can make dynamic custom characters, but I know that popular characters have been ported over pretty much every character in the original roster. Here's an example.
4 players are in a group. All four pick a character from the same slot. Because there is 3 characters per slot, two people need to have the same character. Also, because the custom characters are dynamic, each one of the characters in the slot can go over Toon Link, ROB, Snake, and Sonic. The code will assign each custom character an open character slot to replace, depending on which ones are already taken (the code would go in order from player 1>4 to avoid conflicts). This would be the end result.
Player 1 gets Character 1 (Loaded over ROB)
Player 2 gets Character 1 (Loaded over Snake)
Player 3 gets Character 2 (Loaded over Toon Link)
Player 4 gets Character 3 (Loaded over Sonic, because no other character slots are left.)
Every square in the CSS would need a different combination of the 36(?) characters, and it would be a lot of work to get a table of each combination, but I can't imagine conflicts emerging.