I would add to Lee's information that you should be able to get a 20% discount on the cruise fare if you show the rail ticket you use to reach Bacharach.
Are you cruising to Braubach for the purpose of touring Marksburg Castle? If not, I would change this up a little and instead of taking the train to Bacharach, take it to Rüdesheim to start the cruise instead. This would add a Rüdesheim - Bacharach cruise segment, would cover the same Bacharach-St. Goarshausen segment your plan covers, and exclude the northerly St. Goarshausen - Braubach segment that your plan includes (I think the segment south of Bacharach is better than the northern segment from St. Goarshausen to Braubach anyway.)
And you can still see Bacharach - you can make a free cruise boat stopover in Bacharach for 1 or 2 hours (2 hours if you catch the 9:15 boat) when you start the cruise in Rüdesheim.
Tickets for above: about €40 total as follows... This is going to get a little complicated. But you can always go with the pricey tour :)
CRUISE: Rüdesheim - St. Goarshausen (€19 regular price, so about €15 with a 20% discount when you present your train ticket.)
TRAIN: All the train travel can be done using the direct VIA train from Frankfurt. In Frankfurt, buy a RMV Tageskarte (daypass) for Frankfurt - Lorchhausen (€21.80.) This ticket covers the outbound Frankfurt - Rüdesheim train ride and the second leg of the return ride that afternoon or evening from Lorchhausen (which is a little way north of Rüdesheim) to Frankfurt. You would then need one more ticket for the first leg of the return by train from St. Goarshausen to Lorchhausen - DB sells this ticket for €3.60, and you could by this at any DB ticket machine anywhere.
If you ARE touring Marksburg: Figure around €49 total...
You can still begin the cruise in Rüdesheim as above. Cruise to Bacharach, stopover there. There may or may not be later KD boats to Braubach on your day of travel as not all boats travel that far north on all days. But there will be northbound KD boats to St. Goarshausen (just south of Braubach) that leave Bacharach at 10:15, 11:15, and 12:15 (and arrive at 11:05, 12:05, and 13:05 in St. G'hausen) and you can take the train from there (every hour at :31 minutes after) to Braubach (add €4.65 more for this train ride using a normal RMV ticket bought at St. G'hausen station.) Then for your return train to Frankfurt, instead of the DB ticket from St. G'hausen, you would need a DB ticket from Braubach to Lorchhausen (€7.90, so about €4 additional cost.)
Note that the purchase of tickets for different legs does NOT mean you get off the train. Ride straight through from Braubach or St. Goarshausen to Frankfurt on your way back as long as you have tickets for each segment.
The only small hitch with this plan is that the VIA trains from Frankfurt arrive at :04 after the hour in Rüdesheim and the KD boats leave at :15 after - so you should plan to scurry down to the KD dock or to spend an hour strolling Rüdesheim (or having a nice Frühstück there.)