Can your new shaders just replace the current default appearance shaders?  (Still have hacky code like I do now to turn off lighting).

My plan is to have one shader that works for most geometry and most appearances.  I still need to do some work with matching vertex formats, but this shader should work even when all attributes are not backed by buffers (we'll latch a default value).