We did all ship tours, apart from when we chose to just walk the town or stay onboard (Hambantota). Just wanted an easy cruise TBH.
Please do not take the ship tour to Yala, it is incredibly overpriced. A Sri Lankan friend of mine choked on his lunch when I told him how much X were charging. Follow Strongbox’s advice and get a 3rd party tour.
Speciality dining. Got approached a couple of times. Second time I just said it was too expensive, and how much it used to be, and we could always get good discounts. Guy dropped it to 2 for 1 without a thought. Didn’t take him up on it though, to my mind just not worth it given the quality in the MDR.