Control System - Changing damping on-the-fly?
Any particular reason you are considering implementing a D term? 
The reason I ask is while they are great in theory, providing a higher component for high error steps and smaller component for smaller error steps THEY are very prone to noise.

They are at the end of the day, differentiators. As a result they are usually not considered for practical implementations of control loops. If they are, it is small component or in the form of a lead-lag compensator.

For you specific example with an actuator hitting an end-stop, the issue isn't so much with hitting the end-stop, but with hitting it with "high velocity". 
One option to consider is at the output of your PI (maybe D) position loop, the output which is a speed demand into the next loop, is to include a dynamic saturation block. 

The saturation limits are then dependent on the absolute position of the actuator. 100% rate for say... 90% of the stroke. then as the actuator comes closer and close to the end-stop, saturation limits are decreased so at... 98% IF there is any high speed demand out of the position loop for whatever reason (instability, noise, BAD command...) the actual speed limit is 10% of maximum