Did you confirm that the EXP was using an VIP/miles for their upgrade? If they were using EXP comp upgrades, then they should have been behind you from the get go. With SWUs expiring soon, I am going to assume this EXP had one or two left they had to burn.
Also, since it was the GA's fault, they should have used an unsold F seat to accommodate that pax if any remained. Was F full?
I am of the opinion that confirmed means confirmed means confirmed, especially when using an upgrade instrument other than e500/EXP comps. I'd probably have asked for the next flight with J (forget C inventory at this point) and if that wasn't till the next morning, they were free to offload your checked luggage if you had any and put you on that.