The problem with redistribution of wealth is that if the very wealthy have, say, 50% of their income taken away, they have 50% less reason to earn it in the first place, by creating goods and services that other people want to buy. And when they do, they necessarily must transfer wealth to other people, in the form of wages, payment for goods and services, and eventually selling the final product (which the purchaser views as a net benefit, and which he necessarily can afford to purchase). That is why the US, which has high wealth inequality, also has high standards of living overall.
A million people with $300 each will not be able to create a million washing machines, but one man with $300 million can make 2 million of them, and when he sells them they will improve the lives of the purchasers in a way they could not do by themselves. If 50% of his profits were to be taken away, he will make a decision such as moving his business to another country or state, which has less taxes. This will result in less income to workers and businesses in the original location, and less taxes for that government.
If wealth inequality is an evil, it is an evil of the most necessary kind.
Another idea: make the username the primary key and dispense with the id column. Username will not be changeable, but I think that is a rare case anyway.
Maybe the application could generate a randomized number of empty fakes whenever a new user signs up, and then fill them up overnight or during another low-load period. But this would obviously not help as much if the system was already compromised.
Also, to make things really convincing, there would also need to be fake transactions which the application could somehow recognize as such. The solution to that might be with fake products, these being in fake product categories that are in a fake category root. Complicated, yes.