This is going to be a blind shot, but I also had a similar problem until yesterday, so I've decided to chime in just in case I can help.
I have two 38 skin-combined models that were also "skipping" skins when changing their appearance. Not always, though, so troubleshoot has been slow as hell and I didn't want to involve you guys because my use case is completely crazy with so many skin constraints, attachments, etc...
In some cases I needed to re-apply the combined skin to avoid the problems, in other cases I got an IndexOutOfBounds exception and the models were missing their eyelashes... it was madness.
Until yesterday I decided to rape the runtimes, lol... and modified Skeleton.cs, like this...:
public void SetSkin (Skin newSkin) {
//if (newSkin == skin) return;
if (newSkin != null)
{
//if (skin != null)
// newSkin.AttachAll(this, skin);
//else
//{
ExposedList<Slot> slots = this.slots;
for (int i = 0, n = slots.Count; i < n; i++)
{
Slot slot = slots.Items[i];
string name = slot.data.attachmentName;
if (name != null)
{
Attachment attachment = newSkin.GetAttachment(i, name);
if (attachment != null) slot.Attachment = attachment;
}
}
//}
}
skin = newSkin;
UpdateCache();
}
That is, I make the SetSkin method ignore the previous skin, so everything gets reset every time.
This solved all my problems regarding combined skin changes, but your mileage may vary, ofc.
I don't know if this may be a bug or I'm just doing something wrong, tbh.