Yes, in my main performance patch as well, on rare occassion one of them bpatches won't initialize correctly. I've done the same, adding a delay, letting the file I/O initialize before bothering with dumping the file data into their respective bpatchers. It confuses me though. In isolation the bpatchers in question load fine with their internal loadbangs each time that I've opened them. So, i do believe I know what you speak of.
I would say it is not even a low priority thing. I'd say that loading patchers is done in a seperate thread (like opendialog, which on the other hand blocks until the dialog is closed). This means that the only way to know when the loading is done is to put a loadbang in the abstraction and to continue only after that bang fired. To make sure all the abstraction's loadbangs have fired before the abstraction says it's finished, you could put a deferlow after the loadbang that signals load done (assuming there are no other deferlows in the initialization of the abstraction).
I am working on exactly the same thing now, trying to make a huge patch a little smaller by adding functional parts only when they are needed.