the whisps BUY the hero? why dont you make the heros training time to 1 (0 inpossible) and let the heros be trained than it would work with this trigger ...
but if the player may only have 1 hero you can also make this:
event: unit enters (playable map area)
conditons: boolean - (triggering unit) is a hero = true
actions: pick all unit owned by (owner of (triggering unit)) of type whisp and do: kill |remove| (picked unit) |