In Bomberman powerups are spawned through player action. When a player destroys a block there is a chance that a powerup is spawned on the tile of the destroyed block. Perhaps your game should tie powerup spawns to player action.
Let's say your game has destructible blocks like Bomberman. Whenever a block is destroyed it would have a chance to spawn a powerup. It could be a flat chance per block, say 10%. A flat chance like this would technically be fair for all players, but might give somebody a really lucky streak of multiple powerups in a row or a really unlucky streak of no powerups for a long time.
Instead of using a flat chance for each block you could use a progressively growing chance and track it per player. The chance would start small, let's say 1.5%, and then grow each time a powerup is not spawned. When a powerup is spawned the chance drops back down to its original value (1.5% in our example).
So let's say a player destroys a block and the RNG rolls with a 1.5% chance. The roll is unsuccessful so the chance for that player is increased by 1.5% up to 3.0%. The player again destroys a block and gets no powerup. so the chance on the next block goes to 4.5%. When the player finally spawns a powerup, and they eventually will since the chance continues to increase, their chance on the next block reverts back to the base value of 1.5%.
This system has a couple advantages to a flat chance across the board:
1) It minimizes really lucky streaks because after a player spawns a powerup their chance on the next block drops dramatically.
2) It minimizes really unlucky streaks because the player's chance to spawn a powerup continually grows until it eventually reaches 100%.
You can also adjust the base chance per player depending on their score or other factor. If you want the losing player to have a chance for a comeback you can set their base chance at 2.5%, increasing by 2.5% each "miss."