The problem I have with that is that the player could figure this out and always get the max number of bonuses before moving to the next wave...
Why, exactly, is that a problem?
Skill-based games with limited content, like most shoot-em-ups, gain most of their long term motivation through mastery of the more obscure game mechanics. Those mechanics novices are either not aware of or lack the skill to exploit effectively. A good study object in this regard are score-focused arcade shoot-em-ups like DoDonPachi, Ikaruga or the Touhou series. Players who play these games will usually have this skill progression:
- Beginners don't even look at their score. They just try to stay alive until the end of the stage.
- Intermediates will look at their scores and recognize opportunities to gain more score. They will take additional risks to make use of these opportunities.
- Masters don't just know about these opportunities, they also understand their exact risk/reward ratios and synergies. They don't just use them, they use them intelligently. They know exactly when to do what to ramp up insane high-scores others can just dream of.
They are all playing the exact same stage on the same difficulty. But they are still playing them in a completely different way. And each of them gets challenged to their skill ceiling. Games which manage to do this well are examples of great game design.
Mechanics which govern the spawning of bonus objects are one example for a mechanic the beginners can ignore, the intermediates can use and the masters can exploit. All you need to make sure is that the way to obtain the maximum number of bonus objects per wave requires not just knowledge but also skill. When you just spawn a bonus object every X seconds and don't punish the player for playing too slow, then you reward them for taking their time and punish them for playing quickly. That makes the game very boring for those who want to become masters.
Have you considered to trigger the appearance of bonus objects through kills? For example, every time the player kills X enemies within Y seconds, you spawn a bonus target? This also adds some adaptive difficulty to the game: The better the player is playing, the more additional targets they get to shoot. That means a skilled player will need all their skills to kill the enemies and the bonus targets on time. The beginner, on the other hand, who is already struggling with hitting just the normal targets, will get less additional targets, so they won't get frustrated when they don't manage to hit those too.
But if you really don't want to go down that path and make sure you always have the same number of bonus targets per wave, then pick a specific enemy per bonus target (at random or predetermined) and spawn the bonus target when that enemy is killed. If you don't want this mechanic to be too obvious, add a slight delay.