Looks like deleting assets\skins, assets\objects, and launcherprofiles.json fixed my issue.
Just tested in 1.8.9 and the skin loaded properly in both multiplayer and singleplayer. 26.1 snapshot 5 also had the skin appear as Sunny, however. The issue applies to other 1.21 versions as well. The issue persisted even after disabling outer layers and cape.
No it just broke that one time. I haven’t had the issue since.
I fixed it by deleting assets\skins, assets\objects, and launcherprofiles.json so it was probably just something that only let me have the skin with shorts as the custom skin. Maybe there was a corrupted file somewhere?