This is the code that adds it (in a SelectTool subclass), am I doing anything wrong? Is the start method called more than once in a SelectTool subclass?
The start() method is called every time the tool is instantiated, meaning for each document. So you need to keep track if you have added the menu. And keep around the instance you used as a target. So you can store self to a global variable the first time and check that variable in all other invocations of the tool.