It sucks to have this sort of delay, but it happens to everyone and it sounds like CX did everything they could.
The real cause was the delay from China, and those delays happen every day and are totally beyond the control of any airline. 2.5 hours is by no means as bad as it gets. We are stuck with it until the Chinese military stops commandeering commercial airspace... which isn't going to happen any time soon.
At least CX has a lot of flights heading to Europe so they could get you on something, even if it was indirect.
I'm surprised they didn't offer you a night at one of the airport hotels though.