It's always a problem with Grand Prix, the pools are extremely imbalanced and even more so when some teams decide to tank or play with weaker squads.
The whole system needs to be thoroughly revised, but knowing FIVB, it's not going to happen.
One idea would be to make drawing of lots for pools according to world ranking. There would be 4 groups according to world ranking:
Best 4: USA, BRA, JPN, ITA,
Next 4: CHN, SRB, GER, DOM
Next 4: CUB, TUR, THA, KOR,
Worst 4: POL, ARG, PUR, TPE
Then, in every pool of WGP would be one team from each of these groups, and there should be a rule that teams can meet each other max. twice during preliminaries. Even though this system wouldn't be perfect either, there would at least be some limitations. For example a pool like we had this year with BRA, USA, ITA, GER would not be possible, and it would be guaranteed that there is some balance and a team like THA could not play 4 times against teams from the worst group. Of course, some countries sending their B teams would cause problems for this system as well, because for example POL would be in the worst group from world ranking but they are definitely better than DOM's current team. But then, there is no perfect system for everything...