I have to give a third thumbs up to the idea of going to St. Johns to Trunk Bay Beach. I just did it last Saturday for the second time and absolutely loved it. You can rent the snorkel equipment right by the beach for $5 per set. They also have a snack bar there with hot food such as burgers, hot dogs, fries, etc.
It is easy to get to...after you get off the ship, head towards the taxi area and tell them you need to go to Red Hook to catch the ferry. That is $10 per person. Next, take the ferry to St. Johns ($6 per person each way). Then, at the Cruz Bay ferry terminal, simply take a taxi to Trunk Bay ($6 per person) where the admission is $4 per person.
Just remember...the ferry leaves every hour on the hour from each terminal, and the cab ride to Red Hook can take up to 20 minutes, so you really should get off the ship as soon after 8:00am as possible. Plus, the line to buy the ferry tickets at the Red Hook terminal can be rather long, so consider that as well. The last thing you want to do is be stuck at the ferry terminal waiting for almost an hour!
I know it sounds complicated, but it is really rather simple and there will be lots of other cruisers right there with you, so don't be afraid to ask them questions.
Trunk Bay is truly one of the most beautiful places I have ever seen and the underwater snorkel trail is awesome!