Oh, I think I misread your first post.
"Is there absolutely no way of changing the Attachments of a SkeletonGraphic?"
You change attachments normally, like you would in SkeletonAnimation.
SkeletonGraphic's limitation is only that it needs to use one texture. Because its base class that's being used to integrate into Unity's UI, MaskableGraphic, also needs to use one texture. That's why repacking is the solution.
Spine's Clipping feature doesn't really help or hurt you if you use it instead of Unity's own masking. You would still need to solve the problem of needing one texture. Unity's masking is probably more performant though because it's stencil-based, so never mind using Clipping.
There's no need for you to try to mimic the GetRepackedSkin method. I've already written the alternate version of it. It will be out with the next unitypackage update soon.
On your end, you need code that has these 3 steps.
void Start () {
var skeletonGraphic = GetComponent<SkeletonGraphic>();
var skeleton = skeletonGraphic.Skeleton;
var skeletonSlotList = skeleton.Slots;
// 1. Collect original attachments
var originalAttachments = new List<Attachment>();
for (int i = 0, n = skeletonSlotList.Count; i < n; i++) {
originalAttachments.Add(skeletonSlotList.Items[i].Attachment);
}
// 2. Use the GetRepackedAttachments Utility method.
var outputAttachments = new List<Attachment>();
AtlasUtilities.GetRepackedAttachments(originalAttachments, outputAttachments, materialPropertySource, out outputMaterial, out outputTexture);
// 3. Use the newly repacked attachments to your slots, instead of the original attachments.
for (int i = 0, n = skeletonSlotList.Count; i < n; i++) {
skeletonSlotList.Items[i].Attachment = outputAttachments[i];
}
// Make sure your SkeletonGraphic now uses the new texture.
skeletonGraphic.OverrideTexture = outputTexture;
}
Because you have your own "custom" skin system, step 1 and step 3 will probably be more complicated than that code. But the point stays the same. You need a way to collect your original attachments into a List<Attachment>, and then integrate the new output collection attachments in List<Attachment> into your skeleton again.
edit: The unitypackage is now up. Dated today. http://esotericsoftware.com/spine-unity-download