This is because player sprites consist of two parts: head with hairstyle and everything below head. I don't know how to change it, you should ask in a separate question how to turn a player sprite into NPC sprite.
/// setnpcdisplay("<npc name>", "<new display name>", <new class id>, <new size>, <new headgear id>, <new hair id>) -> <int>
That's exactly what I meant. It's rather complex change that would require changes in script.c, status.c, and clif.c at least.