The following method works, but I would not recommend it:
Why wouldn't you recommend it. It's safe, easy to implement, harmless and robust. What else do you want from a good solution?
BTW: A 'Tray-icon-cleaner' as a separate process would solve the problem. It would run constantly (just another useless process) and cleans the icon area once a second. Don't know if it is possible though, but why not.
No need to use zombies ('shot in the head and go to the police'). This is a job for a 'witness' or a 'sentinel', right?