As for the cruise, you missed the best part on your last visit. The truly scenic segment is Bingen to St Goar:
https://i.pinimg.com/736x/ca/e1/50/cae1500f42cf03c44bea2da512d659a0.jpg
Mainz is not where you should be if you are looking for nice scenery. It's a great place for most people to spend maybe a day and night if you are flying out of FRA - it's only 20-25 train minutes to FRA airport - but you aren't interested in its main attractions (churches and museums) so maybe just a night there.
Bacharach is a beautiful town. It has some nice hikes but there's not that much to do right in town. Riverfront accommodations aren't possible like they are in St Goar and certain other towns.
If you would like to do a cruise and just bop around to different old-world towns in the area, I think mardee's suggestion - Boppard - is a pretty good one. Bacharach and Oberwesel to the south are on the same train line and good for exploring on foot. Another Rhine town, across the river from Boppard and to the north, is also quite attractive for strolling around - Braubach:
https://delveintoeurope.com/braubach-germany/
Boppard has several waterfront hotels, some wine venues and a nice collection of restaurants as well. One establishment. Gedeonseck, is high on the clifftops above town. Take the Boppard chairlift up and back and enjoy the views.
Boppard chairlift: https://www.tripadvisor.com/Attraction_Review-g198627-d3306006-Reviews-Sesselbahn_in_Boppard-Boppard_Rhineland_Palatinate.html
Heilig Grab wine garden, in town: https://www.deutschlandgourmet.info/bilder/gross/5710-Restaurant-Weinhaus-Heilig-Grab-Boppard.jpg
Gedeonseck: https://s3-media1.fl.yelpcdn.com/bphoto/T9oxNMwLvt_-r5nCsce-jg/o.jpg
Boppard is a good springboard for outings. The ferry crossing connects you to the railway on the opposite bank with a short walk into Filsen. From Filsen, Braubach, mentioned above, is only a few minutes on the train. Or you can just take the train from Boppard station to Braubach (change trains in Koblenz.)
It sounds like you have NOT visited the Mosel Valley. That is also an option from Boppard. Old-world wine towns like Winningen and Cochem are accessible by train from a Boppard base (also with a change in Cochem) as are other Mosel villages:
https://www.mosel-inside.de/en/travel-guide/mosel-villages.html
Another reason to settle in Boppard: the VRM Guest Ticket, which comes with your room at no charge in Boppard and provides free transportation around the area:
https://www.boppard-tourismus.de/en/accommodation/