I cannot see any quick way, Color Exchange wrecks anti-aliasing, other options such as the gmic plugin no better.
I think back to basics and use layer masks for each part you want to change.
It is worth spending a little time making a good selection of the windows, even if it means each window with rectangular select in add mode. Then save that as a channel, you will need it later. Invert and save that as well.
If you color select the white-ish render almost certain to include parts of the windows so you can use the saved channel to correct that. The timber is then just that selection inverted. Layer masks come from those selections and the layer is colorized as required. That should keep some of the shading.
I get this, Gimp 3.0.6 but it is an old method just the same with Gimp 2.8
I think back to basics and use layer masks for each part you want to change.
It is worth spending a little time making a good selection of the windows, even if it means each window with rectangular select in add mode. Then save that as a channel, you will need it later. Invert and save that as well.
If you color select the white-ish render almost certain to include parts of the windows so you can use the saved channel to correct that. The timber is then just that selection inverted. Layer masks come from those selections and the layer is colorized as required. That should keep some of the shading.
I get this, Gimp 3.0.6 but it is an old method just the same with Gimp 2.8

