The issue is with the LISP code you use.
You use the old fashion "S::STARTUP" to load the DLL and execute command defined in the DLL. Depending on how/where the S:STARTUP is called in your AutoCAD setup, it could be called multiple times (only you know it). To me, it looks like it gets called on after each drawing is opened in AutoCAD, thus the DLL is loaded each time (but after first load, the next "NETLOAD" call would do nothing, because the DLL has already been loaded).
The problem is the call (command "QR"), which I believe does the custom ribbon tab creation. As you can see, since it called multiple times (probably on each drawing opened), thus a tab with the same name/content would be created repeatedly.
The things you need to do (all, or combination of them) are:
1. Make sure the DLL only load once (call "NETLOAD" once), which may not be harmful even it called more then once, though;
2. Implement the IExtensionApplication with your DLL, so that the Tab creation is done in Initialize(), thus, the tab only get created once;
3. In your actual code (wrapped in command "QR"), you would examine existing ribbon control for all existing tabs (by its name and/or ID, and only create your custom tab if it does not exist.
I'd think 3 would be better choice, because during the same AutoCAD session, you may need to make sure the tab always there, even user changes WorkSpace (thus, you may want to handle WorkSpace_Changed event to re-create the tab, if necessary).