Dan,
>We need to have a multi-use com server but need to place a critical section in one area of the code which we do not want the multiple instances to trample on each other.
Why do you need to build it as Multi-Use, which brings with it the kind of problems you are encountering? Why not Single-Use EXE or DLL, or Single-Use Multi-threaded DLL for MTS?
What is the business requirement for Multi-Use COM server?