We have stepper motors on the z axis as well, so calling the spindle the z axis may not be possible.
That's not what I meant. You can't call the spindle the Z axis. What I meant, was will both spindles travel along the Z axis?
If they don't need to move at the same time, then you assign one axis as Z, and the other as A, B, or C, and "swap" that axis for the Z axis when you need to move it.
You modify the M6Start and M6End macros for tool changes.
As for CAM software, it really depends on what you need to do. There is no single "best" for everyone, or every different project.