You could (in theory) encode all your colours/gradients as a curve or 1dLUT , mark up the various different "material IDs" with vertex color and offset them with parameters on the material instance to index into the curve. bit of a waste of effort though imo :D
Well when bringing in a reference image you could for instance create little dabs where you want to extract the colors from. Overall what I am trying to get at is that going for a "real" palette directly can prevent this kind of flexibility. But that said it seems to clearly work well for you, so my point is moot really :D…