> Realistically, it would be both hard to change structurally
Perhaps there is a simpler solution. Here's one idea: for accounting purposes, only count a limited number of plays per month, per user. It can be the first 100 plays, or if you want to prevent any biasing, it can be a random sample of 100 of each user's plays.
A random sampling can even be audited to prove that it was fair.
I don't think sampling's even necessary. Presumably Spotify log every play. If they pushed their logs into BigQuery or something similar, it would be trivial to calculate the revenue breakdown the way the OP describes. 'Big data' is here, and it works. With 100 million users at 1000 tracks per month, we're 'only' talking about 100 billion or so rows to process each month.
Why do we consider that the places who play 24/7 of pop music are biasing the system? If it were 1 cent per play, and Mickael Jackson was played 100 times during the day in one shop... shouldn't they get $1?
If you consider two types of users - average users (10-20 plays a day?) and power users (500-1000 plays per day), both users contribute $10 to the system. Most of the money that the average users contribute ends up sent to the authors of songs that the power users play.
Perhaps there is a simpler solution. Here's one idea: for accounting purposes, only count a limited number of plays per month, per user. It can be the first 100 plays, or if you want to prevent any biasing, it can be a random sample of 100 of each user's plays.
A random sampling can even be audited to prove that it was fair.