Don't shuffle the mapgen table, but instead create a shuffled index list of structures based on probability and loop through that. This finally gives all structures full chances of spawning and randomization in any group instance