we may take the 9:06 or 9:36 and just go with the 10:30 KD departure.
That puts you in St. Goarshausen at 12:05; 12:32 train to Braubach arriving 12:53 - that seems a bit early for the 16:00 tour (unless you're having a long and leisurely meal in Braubach.) Your boat gets to St. Goar at 11:55, so if you wish, you could have some time there first - then catch the ferry across the river to St. Goarshausen later, and the 14:32 train from there to Braubach (arrive 14:53.)
May I ask what is the best way for us to return to Bacharach after the tour, I am thinking it is a train via Koblentz. Looks like there is a 17:54 departure from Braubach that arrives in Bacharach at 19:05. Is that enough time for the tour?
It should be enough for the tour and to walk back to the station - the tour is a bit under one hour long, the walk down maybe 30 minutes.
You can either travel as you suggest via Koblenz, or you could catch the 18:06 train from Braubach to St. Goarshausen (18:25), cross the river by ferry (18:40), and catch the train from St. Goar to Bacharach at 18:56 (arriving same time, 19:05.) Either method is fine, neither better than the other, really. If you travel via Koblenz, you will catch a view of the Marksburg across the river as you proceed by train between Koblenz and Bacharach.
I suppose we could also have dinner afterwards and take a later train back.
Braubach's Market Square (Marktplatz) is a nice spot for that: https://c1.staticflickr.com/5/4143/4751924826_36d7071291_b.jpg
The route via Koblenz features a 25-minute layover in Koblenz station. But it would be a way to stop in Boppard for dinner on the way back.
The route via the St. Goar ferry bypasses Boppard - dinner choices would be St. Goar, Oberwesel or Bacharach (the route via Koblenz would allow dinner in these places as well.)
The Rheinland-Pfalz ticket is valid for the morning train to Bingen, the train from St. Goarshausen to Braubach, the trains from Braubach to Bacharach (with stopover for dinner somewhere), and for the ferry between St. Goar and St. Goarshausen.