If I understand what you are saying, this is annoying, but normal behavior.
LabVIEW can only have one VI of a specific name in memory at a time. So if you have the top level VI in question open, all of it's sub-vis get loaded into memory. So then if you create a new VI and drop the 'General Error Handler.vi' from the palette, it will use the one already in memory from your library.
Creating a new VI right after you start LabVIEW will let you use the vi.lib files, but then when you open your application from the library, it must use any vi.lib files that are in memory first.
Usually it's best not to save a .llb with the vi.lib files unless it's required for source code control. Then it's a good idea to use the Development Environment Applicaiton
Builder from OpenG to build the library for you. This will add a suffix you specify to every VI in the library and relink them to their callers. This way, other VIs you open will use the vi.lib files.
Ed