Find an independant operator who will do a custom snorkeing trip.
Highly recommend a day trip to Rocky Point with snorkel stops en route, and a beach bar-b-q.
South of SP Coral Gardens is a good spot; up north Basil Jones is interesting. If you are adventurous go up to Bacalar Chico area - long boat ride but rather incredible.
Mexico Rocks is a very large area and is popular because it is beautiful - don't miss it.
Also Hol Chan is smashing - just try to go on a non-cruise ship day.