The answer really is a combination of credit cards and other strategies to avoid needing a lot of cash.
In St. Petersburg I would book your two days with a private tour company such as Donruss or Red October, and tell them to put your lunches on the bill. That'll solve the Russian money problem, and give you the most productive two days possible.
When we did an itinerary similar to this one we converted roughly $25 into each currency at a local money exchange before we left. We're in Washington, so it's easy, you should be able to do the same in San Francisco. This generally works out as "walking around money" for a day, (trams, coffee, snacks, etc.). Beyond that, everybody takes credit cards for any significant purchase, and there are always ATM's for backup in case you get stuck.