Why not let the voters redraw the districts? By that I mean, create an election for this one purpose - to define the districts of the state.
Gerrymandering is a legitimate part of the political process, the problem is not enough political parties are represented in the gerrymandering process. Open the process to the top political parties in each state and allow the districts to be created in a cloud instead of a GPS location.
The political parties in the gerrymandering process would be determined by the special election. Voters would declare their political preference at the special election. The number of districts determined by the census would be divided based on results of the special election.
Here is another option Choice Voting