2 reasons why that was
#1 McCarron is a restricted FA. Garoppolo is an unrestricted FA. Meaning Browns could have slapped a 1st or 2nd tender on him and have him for 2018 for a $2m-$4m cap hit. 49ers will have to sign Garoppolo to an extension or franchise him for $25m+ or they basically give up a 2nd round pick for a guy to play 5 games.
#2 It was an in-division trade so of course it's going to cost above market
So using McCarron is a bad example given that different elements were involved.
A lot more risk in trading for Garoppolo than McCarron.
Browns are flush with draft picks for 2018. They hold Houston's 1st round pick and 2nd round pick and Philadelphia's 2nd round pick. They could have very well have been trading the Houston 2nd round pick, which they got for getting Osweiler.
So vastly different circumstances in the Garropolo trade and potential McCarron trade.
Now with that trade falling apart. Bengals can slap a 1st round tender on McCarron which would cost them no more than a $5m cap hit, which if that happens and the Browns want him they gotta give up the #1 overall pick.