I do set the top bit of the instance ID on, like so in C#:
ulong customInstance = FNVhash.FNV64(whatever text) | 0x8000000000000000;
Same for the group ID for all other resources:
uint customGroup = FNVhash.FNV16(whatever text) | 0x80000000;
(I use my own FNV hash class in case it looks unfamiliar.)
For all other CAS-related resources so far setting the high bit on in both the group and instance IDs works fine. Only the swatch images can't be found by the game with the group ID high bit set on - I really think there's a 0x00000000 group ID hardcoded in there. But the Instance ID high bit set on works fine.