You're claiming that "secret" retention bonuses are a way to avoid "giving" promotions and raises? Wow, there's a lot wrong with both parts of that statement.
Almost every company encourages their employees to never disclose their pay to their coworkers. It promotes an information imbalance where the employer wins. Unless you sign something saying that you won't disclose it (which would probably be contestable anyhow), or you're sharing it with someone who doesn't want to know (which would just be rude and potentially disruptive), they can't fire you for telling people what you make.
Don't do it, plain and simple. If you didn't agree to keep it a secret, then it's not a secret. With all of my raises and bonuses-that-not-everyone-gets, I was discrete, just as my bosses asked of me. I only share my compensation information with anyone and everyone who wants to know. It's time we changed this stupid "secret salary" custom.
Also, promotions and raises aren't given, they're taken. You're a grownup, why should your employer care more about your career than you do? Want a promotion? Take more responsibility. Be more essential. Be a leader. Want a raise? Get a better offer, and ask your employer to match it. Write essays, share code, increase your skillset, help your juniors, always be finding ways to make the product better, ways to make the team's processes more efficient.
If you just want to do your job and stay warm, that's fine, but don't expect to get special treatment. A yearly 2-7% cost-of-living pay increase is probably about right.
It sounds harsh, I know, and I'm sure this might not have been your angle at all. I just get annoyed hearing about employees who dutifully do no more than they're told, and wait and hope for review time as if it's christmas, and then get upset when they're treated like cogs in a machine, when they've been acting exactly like cogs in a machine.