You can do the TC drop for cheap, like time2getdirty stated, use some spacers/stack washers/big nuts, ect.
the YJ SY will give you an extra 5/8" length, and has deeper areas between the ears to prevent binding, find one cheap at your local JY. Or RE sell this:
http://www.rubiconexpress.com/JeepParts/Product.aspx?part=RE1822
A DS from a different XJ can give you the extra length you need, between using the search function and actually measuring some of the shafts I've had, here are some of the DS lengths:
98 4WD AW4 W/8.25= 27 7/8"
97+ 4WD AW4 W/D-35= 28 7/8"
88 4WD AW4 W/D-35= around 30-31"
there are a ton of different DS from different models (4WD,2WD,AW4,AX-15, D-35, 8.25, XJ,MJ, ect.ect.) Do some searching and hit the JY's and measure to find what you need, It'll be a lot cheaper than having a custom DS made or getting yours lengthened/shorten.
I have a simmular issue with my wifes heep, we swapped the D-35 out of her 88 for a 8.25 from a 98, her SY looks like yours, barely in there. I would like to push it in another 1-2", so between the YJ SY and a DS from a 97+ D-35 I'll be right where I want to be. I have had several people tell me that it is fine, but I'm not comfortable having my wife and kids in there on the hwy or trails if that DS drops out.
Also check out the Auto Parts section of Craigslist for people who are parting out, there are a few that have many Xj's, all years and models, ask them to measure their DS.