Kazper: Interesting. How did you find the "1st Hero First Unit ID" pointer? If I try to find eg the "1st Hero First level 4 Unit ID" it can't seem to find any address that correspond to the unit ID changes I make from a swordsman (ID 5) to a Healer (ID 8) in that slot which means I don't even get to start looking for pointers.
Looking for an ID change didn't work because it's not the same unit anymore in that slot. Unlike items and spells, units are saved as structs / objects and accessed via a pointer. You can find the pointer to the unit by moving the unit in and out of a slot. Whenever the same unit is in the slot, the pointer is going to be a certain value so you can look for something like "same as first search" or just do lots of "changed value / unchanged value" searches.
I can't remember exactly, but the unit pointers for a hero might all be grouped together closely, so you could look at the pointer location of the first unit ( [eador.exe+159080+4A34*1]+6C ) and look for the others close by.