hello,
while RegisterCustomGuiPlugin could be called in all your plugins, the issue is that you will have a message in the console indicating that the id is already used / in conflict.
So you can check, as you stated, if the library is already installed with IsLibraryInstalled or using FindPlugin and only register and install the library if you find nothing.
The load order here should not be a problem as all modules should be loaded before you need to call anything related to the UI.
Instead of FindPlugin,for CUSTOMDATATYPEPLUGIN or RESOURCEDATATYPEPLUGIN you can use
FindCustomDataTypePlugin or FindResourceDataTypePlugin
Cheers
Manuel