What type of accommodations are important?
If you want a beachy resort feel then I'd recommend staying in Condado maybe at the Marriott in Condado. It's right on the ocean, has a great pool, casino, walking distanc to great shopping & restaurants. It's about 15 min from Old San Juan.
If you're more interested in staying in a more "city like" place that is walking distance to everything, but has no beach nearby, then the Sheraton in OSJ is nice, it's the only OSJ hotel with an actual pool. If you don't care about a pool then there are a few nice boutique style hotels in OSJ.
Another option for both Condado & OSJ that will also save you some money is renting on Airbnb or Vrbo.
A lot of people stay at the Caribe Hilton. Personally, I'm not a fan. You're not really walking distance to anything. It has a beach but it's a small, manmade beach so not worth it imo.
We're on a 7 day Southern Caribbean on the Magic this April/May. We decided to stay in a condo via Airbnb in Condado this visit as last visit we stayed in OSJ at El Cervantes Hotel. Having said all that, if it were my first visit I'd stay in OSJ and leave the beaches to when you're cruising or take a cab to Condado for the day-the Marriott in Condado does Day passes for full use of their amenities. I think it's like $60 per adult.
As for tours. I'd only bother with a tour at the rainforest or maybe a food tour. OSJ is so walkable and English is so widely used, I'd never bother with a tour of OSJ. You could see both forts in one day if need be. OSJ is not very large at all.