There's an existent implementation in Terra Invicta's traits system. Each trait is given a group, if the game tries to give another trait from that group to an agent then that trait is ignored. I think a best of both worlds implementation for OpenXCom might look something like..
All commendations/transformations can now be given a group number.
"Group: 0"
Default. Previous behaviour.
"Group: +X"
Sorts all awarded commendations by rank, then selects the highest rank and only uses the bonuses from that commendation. If more than one commendation is the same rank, then the game selects the earliest awarded commendation of that rank.
ex.
Sniper III: +3 firing, +3 reactions; group: 1
Overwatch II: +6 reactions; group: 1
Supergun I: +100 firing; group: 1
In this case, only Sniper III's +3 firing, +3 reactions bonus will apply to the soldier. The biggest problem is that someone's stats might fluctuate more than people are anticipating. A soldier that's been getting two awards in the same group, but the bonus stats are in health or bravery respectively might have 83 health, 20 bravery in one mission and 53 health, 80 bravery the next. This would be up to the mod author to sort out.
"Group: -X"
Looks at each bonus from each commendation, comparing stat by stat. Only the highest stat found is used for the bonus.
ex.
Sniper III: +3 firing, +3 reactions; group: -1
Overwatch II: +6 reactions; group: -1
Supergun I: +100 firing; group: -1
In this case, the bonus applied to the soldier from group -1 would be: +100 firing, +6 reactions.