The "fix" is really simple but MLB won't ever agree to it. Share television revenue the same way gate revenue is shared. When the Twins go to face the Dodgers in LA, they get a 50% percent cut of 1/81 of the Dodgers TV revenue.
That way the Dodgers still have a significant advantage - they get 50% of their massive TV contract - but other teams raise their floor while also lowering the ceiling of the Dodgers.
Then create a salary cap/floor based on 50% of league revenue. Everybody wins. The players receive more money, the league sees more competitive balance, and big market teams still have an advantage.
Of course, this plan would require MLB to see past their nose for even a moment so this will not happen.