I'm sorry to hear about your cruise being cancelled and the success you had with the cruise company. BA is however a business and there are rules attached to your ticket, which BA is upfront about and you would have agreed to at the time of booking the ticket. Therefore if you booked an inflexible ticket and needed to change it then indeed the bit you would have got back was the taxes/fees which is obviously a very small percentage of your overall cost. You are quite correct that you should buy things like this together as a package if possible precisely because of this. Did you have travel insurance and if so can you recover any of the money from that?
If BA did change tickets for everybody there would be no point in selling inflexible tickets and the prices would go up. As I said at least BA tell you the rules concerning your ticket which is more than the train operating companies do in this country.