I don't think dropping Napoli wouldn't be the best idea. He still hits in the best lineup in baseball, his home park is one of the best parks to hit in, and still is a threat to hit 25-30 HR's. I think last year was definitely an anomaly in terms of his BA, as I believe that is by far and away his ceiling. He still could find a hot streak and I personally think he should get his average to the .250-.260 range. But it would be hard to find a better replacement strictly from free agency.
As for your question of Grandal and Perez (If in fact, you do decide to drop Napoli anyway), I would take Perez for the rest of this season. Perez was always known to be a contact hitter and is expected to hit for a high batting average, but he's also shown some pop this season since his call up with 3 HR's in just 29 AB's. I wouldn't expect that power to continue, but he would be a nice addition to a lineup. Grandal on the other hand is a little more of a slugger than Perez, but he plays in a weaker lineup, and won't hit for as high of an average. Also who knows if the Padres decide to recall Nick Hundley and have a platoon at the position, since they just signed him to an extension through 2014, and I don't believe they are ready to give up on him quite yet.