This is a issue on Mojang's end, they only allow servers to look up 60 UUIDs a minute, meaning that every time a NPC gets loaded that NPC uses 1 of our UUID lookups, and when a player joins it takes away one. As you can see with all of us loading NPCs soo much we use up our 1 UUID a second very fast, and we get backlogged on our UUID lookups, which is also why the NPC skins don't show up correctly.
If Mojang lets servers more lookup we could solve this issue. Or we would need to basically decimate the NPC population (which may also help reduce lag).
That said there is a way around it, but it requires that me or bacca can manually add people to the whitelist, but this requires us to do alot of work and isn't easy.