Are you running servo motors or steppers? With steppers, you can change the direction in software; I don't think swapping wires helps.
The incremental drop of the Z axis sounds like lost steps on the upstroke. You might try reducing the acceleration of that axis by half or so to see if that helps. There also could be mechanical problems like a loose coupler or lack of lubrication that cause that. Or it might be that your spindle assembly is too heavy, and a gas spring to counteract that might be required.