Thanks for the replies.
Adding the D term did work to tune out the overshoot since as the error approaches zero, the current is decreased and the voltage waveform slows down before it hits the limit, but only under the single condition shown above. As people have said, it doesn't work ideally because the overshoot is when the current limit turns off and the voltage error amplifier kicks into action. While the current limit is on, the opamp saturates and it takes time to recover from that (and discharge that capacitor). If the voltage error amp wasn't being interrupted by the current limit I think it should work better. As it is, I have it tuned to get rid of this wost case overshoot on startup when the current limit stops, which means at other load conditions where it isn't held to the current limit while charging the capacitor, it is overdamped.
I wouldn't mind if that was the end of the story, but unfortunately if I step a load in after startup enough to push it into the current limit and then remove that load, it again has the problem with the integrating capacitor discharging holding the current up too long and the overshoot returns, but this time when the capacitor finally discharges and the errror amp comes back into action finding voltage is now too high, the D term slows the return from overshoot rather than slowing its ascent.
A PID controller won't work as an ideal PID controller if the loop is ever broken like when this current limits. I'd probably have to current limit in a different way than by simply clamping the voltage error signal into the voltage controlled current source to get around this.
Nickm; Yeah, I know about soft start, but it only works on startup which means after startup the step response is not helped by it and a step load will produce the overshoot as shown.
Mj12; Limiting the rise time of Vset is something I had considered for the initial overshoot, but it will not help when Vset is constant and Rload is what changes.