I am finding all hotels in SD are expensive. However, check the gaslight district, the hotel circle hotels that are near SW and Mission Bay, check around Liberty Station on Point Loma. All are not too far from the port.
If you definitely are going, sometimes hotels have a pre-paid discount, but not refundable.
Have
AAA or other discount? Try using every kind of discount you can apply. Sign up for the hotel's free membership card, sometimes they offer discounts. I always get tons of emails from hotel groups I belong to. Price on Expedia or other online agencies to see what they offer.
I hope you find something. It is fustrating when you get sticker shock. Even with my work discount, I am still paying alot for our hotel in SD (which is not where you want to stay), but it's where what we want to do, and we are not sailing out of there.