It looks like the key to getting shaders working with multiple texture units has to do with the texture target geometry knowing about the proper texture coordinates. A while ago SetVertex() was modified to set up the first 8 multitexture coordinates. Right now only square uses this call as far as I can tell. All of the Geos could be changed to use this function or a different SetTexCoord() one could be made to deal with the glMultiTexCoord2fARB calls. The code would be pretty ugly if each Geo added 7 more texture calls per vertex otherwise.
Also, I quickly added a 'texunit' message and glActiveTextureARB() call the pix_texture which allows for the use of multiple texture units in shaders without pix_multitexture. I don't know if this is duplicate work or goes against plan, but it seems pretty straightforward when working with shaders.
cgc