Yes, you can head over to St. John first thing in the AM by taking a taxi over to Red Hook Ferry, then another cab once at St. John to Trunk Bay for snorkeling or any of the other beautiful islands. Here is the ferry schedule:
The taxi getting to the ferry is a good 20 minutes and about another half hour to St. John. Once at St. Johns is a short ride to the beach and bring plenty of film, nice scenic ride to the beaches. If you head out early in the morning and spend a few hours there, you can easily get a cab back to the ferry and still have time for some lunch onboard your ship and then you can shop in St. Thomas. We did do just that once and it was do-able. You can even do your shopping right by the ship pier in Havensight mall, it basically has all the same stores that are downtown, but smaller and right there walking distance from the ship.