I have a Visa card issued by my credit union. It has no cash advance fee. They charge no more than 1% for conversion. They charge 13%/year for interest on cash advances -- this can be avoided totally by paying in advance.
I use this Visa card in ATM's all over the world. Outside the U.S., it is rare to charge an ATM fee. So, I get money with a 1% overhead. I doubt if it is possible to do much better.
I never change money back into dollars. If I have an excess in a currency that I don't regularly use, I use my excess money to pay part of my hotel bill.