I suspect that your current plans will provide additional time to visit Rüdesheim, or Bacharach, or Oberwesel on this day trip. These enjoyable and worthwhile towns are simple hop-off visits that can be incorporated easily on a full-day outing.
Marksburg no doubt requires some additional travel, but it is probably doable for most visitors on a day trip from Frankfurt, I think. Braubach is roughly 20 minutes by train from St. Goarshausen, a cruise boat stop right across the Rhine from St. Goar. Morning cruises (1.5 - 2 hours long) drop passengers at St. Goarshausen at 10:45, 11:00, 12:50, and 13:00, which leaves ample time to reach Braubach and visit Marksburg. After Marksburg, trains from Braubach > Frankfurt take 2 hours, but the trip is DIRECT.
For those with limited time, the best way to take in the Rhine is to spend one night there, IMHO, ideally in a town that is well located for their other travel stops (like FRA airport.) You buy yourself a lot of sightseeing time - and avoid a couple hours of travel logistics - when you wake up in Rüdesheim or Bingen, have a leisurely breakfast, and hop on that 9:00/9:15 cruise boat. Visiting Rheinfels AND Marksburg then becomes a viable option.