This isn’t due to circumstances beyond the carrier’s control. It’s a money-saving change that Virgin delayed announcing until it was too late to cancel a booking. And the fact that they also canceled a nearby port on other itineraries strongly suggests bad faith. Yes, they may be legally protected, but it’s a disgraceful way to treat people.