The bug

The skin of the host player who opened a world onto LAN does not load in but the other player that joins does. The host can see everyone and themselves, but the other player cannot see the host's skin.

From the joining client's log:

[02:08:20] [pool-2-thread-1/ERROR]: Signature is missing from textures payload

Code Analysis

Outdated code analysis by [Mod] Marcono1234 can be found in this comment

New (1.11) code analysis:

Based on 1.11 decompiled using MCP 9.35 rc1

As stated before the line "Signature is missing from textures payload" is related to the problem. If I understand it correctly, the following happens:

When a player loads a singleplayer world his gameprofile does not have the property textures , therefor the signature is not checked. The method net.minecraft.client.resources.SkinManager.loadProfileTextures(GameProfile, SkinAvailableCallback, boolean) then fills the profile properties for the player without having it be signed ( net.minecraft.client.Minecraft.getProfileProperties() ). When the player then opens the world to LAN all players joining are verified and their gameprofile data is (probably?) signed.

The problem happens now when the hosting player sends the gameprofile data of the connected players to the other players. Because the gameprofile data of the hosting player is unsigned the other clients will not load the textures (skin, cape...).