A couple of observations --
The OutOfProcCOM demo should have embedded the type library in the DLL COM server and registration of the server should have registered the embedded type library. You wrote "However, It seems like embedding the tlb made the reference dialog in excel/vba seemingly happy, but library was not added". I don't understand what you mean by this statement.
Its not clear to me why you are thinking about using tlbimp.exe. This .Net Framework utility is used to create a PIA. The .Net Framework isn't in the scenario you described. COM registration for a .Net 7 COM Server is the same as for a native C++ COM Server.
If your intent is to consume the .Net 7 COM object from a VB6 DLL loaded into Excel then the COM registration should be sufficient. Presumably you will need to change some code since it appears that you will be using different CLSIDs and IIDs than the old COM server that you are replacing with your .Net 7 server. Everything that you have mentioned so far relates to creating a new component that has no dependencies or relationship to the old COM server.
Since VB6 creates 32-bit code you need to make sure that you are creating a 32-bit .Net 7 binary.
Registration-Free COM generally requires manifests for both the COM client (.exe) and any in-process COM Servers. Since your COM client is Excel this may not be practical.
Finally, this thread has started wandering. It was initially focused on creating and registering a type library to support early binding.
Additional questions about interoperating with VB6/VBA should be posted in new questions.