I've been to St. John 3 times and St. Thomas once. Always a blast. If you want a great place to stay, look into house rentals in Klein Bay. That was by far the best view of anywhere. The Westin there is very nice too, but it is not as delocated if you're looking for that sort of thing.
I'm real big into snorkeling and free diving, so if you want good beaches to snorkel off of I would recomend the following.
5. Trunk Bay (this is the place you see on post cards, awsome beach, one of the more crowded, snorkeling is decent).
4. Cinnamon Bay (Right next to Trunk Bay, a wider beach with less people. More of a swim to the outcrop, but better snorkeling)
3. Hawks Nest (This place has some great snorkeling, but I might suggest taking a boat to it. If you go from the beach you'll be in choppy/shallow water for a good while before you get out into the good areas)
2. Water Lemon Key (In Leinster Bay. You have to go for a little hike if you want to avoid a long swim, but this place is the best offshore snorkeling you'll find. If you go during the right time of year there are hundreds of starfish on the gentle sloping east side of the key and there are almost always turtles to the west and south of the key.
1. Congo Cay (You'll have to take a boat, but this is the best place you'll find on the island. Shallow, dense marine life on one side, deeper on the other side with large Tarpin and the occasional reef shark if you're lucky.)
Any other questions just let me know and I'll do my best to help you out.