We took the RCCL tour to Trunk Bay. I didn't think that one through. Nice trip, but we only got 50 minutes to spend on the beach itself.
The ferrys go from both Charlotte Amalie and Red Hook. Try this link for schedules and fares:
Scroll down to "between St. Thomas and St. John"
This is how we're doing it next time.