I went last July on the Serenade of the Seas. St. Petersburg is very safe. As you mentioned you either need to obtain your own Visa or go on a government sanctioned tours that do not require a visa (99% of our sailing did the tours!).
The port has had a very recent renovation and is very modern and safe. You are a short drive from the city but every tour bus I saw and went in was very modern. I didn't notice any speeding or unsafe driving.
There are plenty of shops at the port for souvenirs and most of the major sites will accept credit cards. I would check with your own bank for any possible fees or restrictions. We took cash to avoid any potential problems or fees.
Let me know if you have any other questions