While not perfect, we could consider adding some consistency to the mechanic. So for example, when a unit hits another with melee withdraw, each hex around the unit has a specific priority. The unit will always withdraw to the highest priority hex, unless that hex is not viable, in which case it goes to the next one. I am not considering this as a replacement to my proprosal but possibly an augment (or probably a seperate proposal as I don't think one is necessary to have the other).

Here's an example:

View attachment 665290
So in this example, the unit attacks from the left. The unit will always withdraw to hex 1 (aka directly away from it) if that hex is viable. If not, than it will always withdraw to hex 2, and then if hex 2 is not available, than hex 3, etc etc.

The logic is:

1) Withdraw directly across from the attack if able.

2) If not, withdraw 1 hex counterclockwise.

3) if not, withdraw 1 hex clockwise.

4) if not, withdraw 2 hexs counterclockwise.

5) if not, withdraw 2 hexs clockwise.

6) if not, no withdraw occurs.

I chose counterclockwise over clockwise purely arbitrarily, we could easily swap them.