I've looked at the overlay a bit more. My initial impression was not quite right -- a lot of the components of surfaceflinger_client are in frameworks/base/lib/gui in cm9. So, I tried moving more stuff from cm7 over. It is now breaking down because cm7 doesn't have IGraphicBufferAlloc, ISurfaceTexture, SurfaceTexture, nor SurfaceTextureClient. I tried removing some of these completely, but they are rather tied in to system/media/wilhelm and frameworks/base/libs/media/stagefright.
SurfaceTexture looks like it might be used to adapt an overlay frame to an OpenGL texture. The weird thing is it has a dequeueBuffer(), which is one of the main functions in Overlay. Could be unrelated.
Stagefright looks like it's an interface to various hardware codecs, video and audio. It was there in cm7, but looks to be expanded quite a bit in cm9. Since this ties into SurfaceTexture, there's a good chance stagefright needs the overlay connected properly in order to work. It looks like Skype probably uses libstagefright, I'm not sure if recording video in the camera app would as well.
Next time I have a chance to look into this stuff, I may try to back up some of the changes I made, and try to adapt the cm7 surfaceflinger stuff to cm9, while trying to keep the SurfaceTexture pieces, although that will require figuring out how to make the cm7 code use it.