instead of lerping each layer, just create and add color to each channel.
then " Add" them all together with the add node.
As for optional replacing a color with a texture, there are switch/staticswitch parameter nodes, which in an mat-instance allows you to select between a true/false statement.
i.e. UseMaterial = false > use color
UseMaterial = True > use texture.