@Thom M I’d use HSV and look for a range of hues.
I think that HSV is the best approach here.
Check out this little example for some inspiration.
In the paint event, there are definitions for the minHue and maxHue which can be adjusted to fine tune the range of colors that you want to affect.
The slider changes the degree in which the hue is shifted.
In HSV, you can think of hue in degrees, so take the hue value and multiply by 360 to get the value in degrees.
Then you can rotate that value by a set amount of degrees to change the hue and divide by 360 to get back to the double value that the HSV constructor needs.
If you use that new hue, while leaving the original saturation and value unchanged, then you will change the color, but not the saturation or brightness.
This is certainly not nearly as sophisticated as what Photoshop would be doing, but I think that it's good food for thought while approaching this problem.