The time to complain is when on board, shore excursions will usually give you back credit, and if you complain to guest services, possibly an OBC
With an independent dive operator, you do have to research to confirm the dive operator you're booking isn't the same one the ship uses. Often the dive shops all know each other in the same location so one could call any of them and ask if they know which operator does the cruise ship dives because you're trying to avoid them