What's an efficient model for redistribution of coins between wallets? Let's say I have 50 addresses which have an average of 0.5 BTC. Some have two or three times the average balance, while others have less than 0.1% of the average. Many times per day an address is selected to either receive or send some amount of coins, fueling the inequality.

What's an efficient, cost-effective method of rebalancing a large number of addresses such that each contains roughly the average balance?

(Assume the algorithm to select a keypair with which to transact is fixed and cannot be modified for argument sake.)
Once a day, take the addresses with balances more than some multiple (say, twice) of the average, and create a transaction that sends money to the lowest-value addresses. E.g. let's say the average is 0.5 and call the addresses A-Z:


A: 2.0 BTC
B: 1.5 BTC
C: 1.0 BTC
...[other addresses with under 1 BTC]
X: 0.1 BTC
Y: 0.05 BTC
Z: 0 BTC


Transaction would send from A, B, and C to X, Y, and Z so that each has the same amount (0.775 BTC).