That's gonna need JASS. If it's even possible.
Unless... you had a unit variable for each hero, and when they attack a unit, the unit being attacked is checked to make sure it's not one of the hero variable units. If it is, you stop the attacking unit from attacking, if it isn't, you make it be that hero's 'unit', so that no-one else can attack it.