I like the Source engine, it can do some pretty cool things, but I agree that it is kinda unstable (TF2 used to crash whenever I minimised it; they seem to have corrected it though).
What I don't understand is why when you install two games that use the same engine you have to have the engine installed twice. They should work like shared libraries do on Linux. You would have the game engine installed somewhere, on Windows for example it might be installed to C:\Program Files\A Game Engine\. In that directory you would have a directory for each major version of the engine, so there'd be C:\Program Files\A Game Engine\1.x, C:\Program Files\A Game Engine\2.x, etc. and then within that directory would be directories containing (1) the game engine (a .dll or .so file) and all the files associated with it and (2) every game that uses that version of the engine. So you might have C:\Program Files\Source\1.x\
Note: "A Game Engine" is a game engine (surprisingly) that I'm writing in C#. I don't know if it will ever support 3D but the way I'm writing it, there will be room for 3D to be implemented later.