Custom NPC skins are something that many server admins have asked for ever since Citizens was first released. In recent Minecraft versions it has become possible to control an NPC's skin via the /npc skin command. By default an NPC will have the default Steve skin. You can set an NPC's skin by using the /npc skin <name> command. Please note that this will not save a local copy of the skin - if the original player changes their skin, the NPC will have the updated skin on the next load. You can also save a skin snapshot by using the /npc skin <name> -p command, which will fix the NPC's skin to a copy of the player's current skin, so it will not change if the original player changes their skin.
What's the best way to set a custom skin?
Set your skin to the desired skin. Go to your NPC and type /npc skin <your name> -p. Change your skin to the next skin for the next NPC and repeat the process.