This actually does work and is implemented in a few renderers.
You can obviate the issue of having too many lights by combining them into light groups. As for area lights with different spectrum at different locations, you simply can't change the distribution after the fact.
In the tracing pass, you can store the shading interactions, then apply them across the spectrum of your light at the end after the shading pass, onto brightness values that you save for each light (group).
Changing the spectrum of the light after the fact, however, is going to be an approximation, but not changin the brightness.