I am very curious whether this could be solved on the model-side rater than on the data side. It is a decades-old saying “garbage goes in, garbage goes out”. If your data contains biased data, the model will contain and even amplify such bias. You are suggesting that this problem can be programmatically solved without a hit on the actual performance of the model. To me that sounds counter-intuitive (the model performs “so well” because it can reproduce the bias in the data) but I would love to be proven wrong.
Good luck!