I think you have two options, really:
1. The model itself contains multiple models:
This approach is used for example by Druid of the Talon unit where a single model has the night elf version and the crow version, but this approach can make the model itself very big with lots of unused models.
2. Use trigger action:
-
Unit - Set Unit Skin of (Triggering unit) to 'Hamg'
This will change the visual part of a unit to another unit. The argument here is unit-type Id ('Hamg' is the unit type id for human archmage hero). That also means that the unit you want to change into must be defined in Object Editor.
You should be aware that the action not only changes the model/skin, but also other things like unit's sound set, etc. to that of the targeted unit-type.
Also, the value 'Hamg' is actually an integer number (it's unit type id, not unit type), but with a bit of custom script you can make it work:
Create two variables: UnitType (type: unit-type), UnitTypeId (type: integer), then run the folowing:
-
Actions
-

Set VariableSet UnitType = Paladin
-

Custom script: set udg_UnitTypeId = udg_UnitType
-

Unit - Set Unit Skin of (Triggering unit) to UnitTypeId