May I make a suggestion. You will spend an hour (at least) in transit each way to St John/Trunk Bay. Between standing around waiting for an excursion to get going, transport to Red Hook, Ferry to St John and cab to Trunk Bay. Trunk Bay is OK, but there are many beaches just as nice on St Thomas.
Take a cab to Saphire Bay. While others are standing waiting for a ferry, you will be on a perfect beach. Snorkelling off this beach is better than Trunk Bay. Full facilities here. Bar, restaurant, restrooms, outdoor shower, chair and snorkel rentals, convenience/souvenir shop. Crowd will be 10% of Trunk Bay and beach is safe and gorgeous. Facing the water, snorkel the outer edge of the coral and rock formation on the right had third of the beach. Taxi each way will cost $6 to $8 per person depending on which port (Havensight or sub base) your ship is in.
Another alternative is Coki Beach, again full facilities and good off the beach snorkelling .
Spend your time at the beach, not in cabs and ferries.