The fast answer to this is:
Geralt's hair are seen as an item from the engine's perspective. An item that can be equiped (just not by the player - but by the scripts).
It can be solved by clearing the entire inventory (Character Customizer thing in scripts), this is important: *AFTER the desired target model (Eskel in your case) is applied* - no matter the technique you are using. When I first cleared the inventory and then changed the model to Ves, it overlapped with Geralt's basic model for some reason. Doing it the other way around removes this issue. If you replaced the default Geralt apperance, then that condition will always be true, so you won't have to worry about it.
After clearing the inventory you should, using the Character Customizer, give the player all of the Witcher's starting equipment, but without the hair. This is done by first copying the "witcher_inventory" entity template and modifying it. I tried also creating one from the scratch, but it didn't work, so just copy this one, go to the Inventory tab and remove the hair, and change whatever you want. Then you link the template in the Character Customizer.
As you will see when editing that template - even the magic signs count as spells. Without adding them to the inv, the player won't be able to use magic (there were no special effects when I attempted to).
Actually it can be done by simple replacing aswell, in that case just edit the original "witcher_inventory", but keep in mind that if you modify original files, they will affect all of your mods (those that you're working on) and may (or may not, I am not sure how it detects which files are bound to which map) get cooked alongside the other files, so you will have to remember every modified original file and keep backups of these files to restore them later. This creates confusion, so I would rather work on a duplicate.
These are the basic guidelines for this. I'll write a more detailed tutorial soon, starting today. Idk when I will finish that, but maybe even tomorrow.
The biggest problem right now is with... voicetags. There are two variations:
1) In the "player" file, I tick only the default apperance. It can be switched by a script and it works fine, BUT any apperance that wasn't ticked will make the dialogues look really really not right (the player character stands with their back turned to the NPC, the camera angles get really weird), because voicetags can't be attached to an apperance that wasn't ticked.
2) Tick all the apperances and attach voicetags. But then, when the player is loaded, the apperance is selected randomly. Now if I want one of the alternative apperances... works fine after switching with a script. But if I want Geralt... oh dear god. If Geralt's model gets selected randomly - it works fine. But if any of the other models is selected - his body parts are missing. This could be fixed only by equipping stuff on those body parts, but if I unequip these items, their models stay. That is not the worst case, but the body parts disappear again after saving and loading the game.
This is because if the first loaded (in this case - random) apperance has no equipment on a certain body part, the engine doesn't try to replace it. Let's say I gave Ves (alt model) some stuff in legs and boots categories. And if Ves gets randomly picked, then the script switches to Geralt, his legs are the only part that show up. I'll try playing with settings in the equipment tab.
UPDATE: In the end, I went with a little bit different route. The tutorial is now on the wikia:
http://redkit.wikia.com/wiki/Changing_Main_Character's_Apperance