I think that the need here is actually more determining of the python-appindicator library is present. If it is present, it will support all the fallback cases that you need. It will handle XFCE, KDE and older GNOME appropriately. Good example of how to do it in this answer.
The appindicator library will use DBus to check if the application indicator rendering process is available. This will be the case on Unity, or if the indicator-applet is running. If it is available it will use that, if not, it will fallback to using a GtkStatusIcon with the same menu.
Unfortunately, I believe you'd have to keep both code paths if you want to handle the case of the library not being available. Though, we'd be happy to help get the library in other distros :)
To not load an applet just prevent it from running.
If the indicator is coded in to the application and the application does not give you an option to remove the indicator from the panel you wont be able to omit it, you cannot omit an application indicator that is build in to the code and has no option to disable it, for that you need source code changes either made by you or you can suggest them to the app developer, which is the last case will be depend on which applications your are referring to.
There are no specific guidelines explaining if and application should or should not have an inductor applet, only what an indicator applet should do.
You can still remove the system applets made by gnome for you system or if the application it self uses an external applet to be used as a indicator.
To remove one of the gnome / unity indicators that are visible by default open the terminal and run this command to show all the applications that can be loaded at start up
cd /etc/xdg/autostart/ && ls
Identify the applet that you want to prevent from loading and edit it with your favorite text editor, ie:
sudo nano nm-applet.desktop
Locate the line with these contents
NoDisplay=true
and change it to
NoDisplay=false
Save and close the terminal.
Click the cog weel in the top right corner of the screen next to your username and select Startup Applications...
, now you will see the application that you just edited the .desktop file and you can disable it.
The applet wont load on next boot
After enabling or disabling and applet following the steps above you will see that each .desktop that you modify will create it's own .desktop file in your ~/.config/autostart
folder.
If an applet indicator that you want to disable does not show on your startup list you need to use the method above, else there will be a .desktop file inside ~/.config/autostart
that can be edited with the described method and will then be possible to enabled/disabled in the startup applications.
Best Answer
It's the indicator applet's default to group application and system indicators separately, and place application indicators to the left of system indicators, so you'd probably need a modified host applet to do that.
See the specification for further information, and you can also ask for help in #ayatana on Freenode.