Wouldn't this show up twice if it were being loaded twice?
I suspect you have a whole series of issues. You may want to post your acad.lsp file and let people take a look at it, and give you some feedback on how things "should" be setup. I think you have a whole bunch of stuff in the acad.lsp file that shouldn't be there.
The acad.lsp file is loaded at Autocad startup - BEFORE any drawings are loaded. You should not have any commands in it that require an open drawing. Things loaded in this file are handled specially, and are not automatically loaded into documents namespaces. Unless you really know what you're doing, you should probably avoid the acad.lsp file altogether.
The acaddoc.lsp file is a good place for loading custom commands. This file is executed every time a drawing is opened, but it happens before drawing initialization is complete. Therefore, you can put things like "load" commands in here, but you can't put some other things in here (like "undefine").
Stuff that requires a fully-initialized drawing to execute is what should go into the startup suite. Essentially, this means everything that won't work if it's executed in the acaddoc.lsp file. Your startup suite itself should be created in the acaddoc.lsp file.
The menu.lsp file is for lisp specifically related to your custom menus. It isn't really the appropriate place to be loading custom commands. That should be done in acaddoc.lsp. If you were attempting to setup your startup suite via lisp called from this file, that may be where your startup suite was getting screwed up - I'm not sure (and don't have time right now to test), but I think the menu.lsp file might be run after drawing initialization is complete. In other words, setting up your startup suite in the menu.lsp file may be TOO LATE in the startup sequence...