Sounds like some of those fees can be avoided if you plan for it, and do it right. Withdraw the money in $US and avoid the biggest fee - 2.5% foreign transaction fee. I know in Negril some ATMs give $US, some give $JA - so that should not be too hard. Then just hit a cambio to convert the $US to $JA.
A 1% fee for ATM use is pretty low - that would only be $1US for $100US, or $3US for $300.
Even if the ATM itself charges another $3US - that is still much better than Moneygram/Western Union.