If you have 2 nights and haven't been to Zermatt before, that is where I would head. It's so pretty. It would be a great place to relax for 2 nights and head up the Matterhorn when the weather permits. I'd recommend the Zermatterhof with a Matterhorn-facing room if you could. Ask for a newly renovated room. I heard the Mount Cervin is nice (friends stayed there this summer) but I don't think they have rooms that face the mountain. Then you could take the train direct to Basel the day of your cruise.
Failing that I'd recommend 2 nights in Lucerne. They have the Transportation Museum (it's quite good) and it's a very pretty town.
Personally I wouldn't spend 2 nights in Basel. And there's not too much to do in Zurich.
ABD seems to be changing how to sign up for excursions. So who knows what the procedure will be when you board. When we went it was huge line-ups at 3:00 to sign up. But they have changed the process since then. Hopefully for the better (it surely couldn't be worse).