I think I found a solid solution. In planner.cpp I changed line 789(ish) from
if (de < 0) SBI(dm, E_AXIS);
to
if (de <= 0) SBI(dm, E_AXIS);
With this change, Idle direction for the extruder appears to be in the retract direction rather than the extrude direction. I do need to confirm more thoroughly that I haven't catastrophically damaged some other section of code. Logically direction shouldn't matter for the extruder when it isn't extruding or retracting, but I guess we will see.
if (de < 0) SBI(dm, E_AXIS);
to
if (de <= 0) SBI(dm, E_AXIS);
With this change, Idle direction for the extruder appears to be in the retract direction rather than the extrude direction. I do need to confirm more thoroughly that I haven't catastrophically damaged some other section of code. Logically direction shouldn't matter for the extruder when it isn't extruding or retracting, but I guess we will see.