Badically what jwatte suggests.
Your inital texture, when given world position coordinates as UV will outperform any and all math. And the noise node possibly.
Noise cheap is just a 256 texture, so it depends on the size of the texture you use for coloring.
Since the color of the one instance can be derived from the single pixel of the texture its likely cheapr than lerping or iffing.
Note: applying the world UV can paint your instance multi-color.
If thats unwanted you have to take further steps to read the correct pixel for the isntance origin point.