My vote would be "none of the above". Trunk Bay is nice but you will invest 2 to three hours in transportation alone. Cab to Red Hook, wait for ferry, ferry to St. John, cab to Trunk Bay (and of course return). All to go to a nice beach.
Maegens is a beautiful beach with no snorkelling, crowds, an admission fee, and "state park" facilities.
The best of all worlds is Saphire Bay. Cab ride is about the same as to Maegens and Saphire is two minutes beyond the Red Hook Ferry stop. While others are getting in line to take the ferry, you will be on the beach.
Beach is out in front of resort and condo's. It is quiet and uncrowded. There are chair and umbrella rentals as well as beach "toys" and activities rentals. Two places serve food and drinks and a convenience store/souvenir stand is a third alternative. Public restrooms and outdoor showers are available (no cost). View is across to St John and the BVI's beyond. Snorkelling right off the beach is tops.
Spend the morning at the beach (say 830 to 1pm) then take a cab from the cab stand at the resort (always plentiful) into Charlotte Amoile or to Havensight Mall for shopping. Give yourself a minimum of an hour to return to the ship from Charlotte Amoile as road does get congested as cruisers head back to ship.