Adding Custom Menu "Run Script" Button Causes Duplicate
Execute Reload Scripts F8 first before re-running the script. 

I think a custom menu function is supposed to run within an addon, where register() and unregister() are run in pairs. Each script execution yields different instance of each functions, even if their name doesn't change across each execution. So unless there is a way to check existing draw functions within a class by name (which I haven't found yet), Reload Scripts or restarting Blender is the way to go.