I have an only partially formed thought on how to fix gerrymandering. I think part of the problem is that even though this is the ultimate political issue, any solution involving politics will be fraught with peril and impossible to resolve. Also, simpler solutions tend to be better.
New law: Voting districts may only be irregular polygons of no greater than 10 sides.
I know nothing about districting, so maybe that number is wrong, but perhaps the concept is sound?