My advice, based on several overseas trips:
The best way is to buy US dollars before you leave. It is a universal currency, accepted over the world (by money exchangers). You budget yourself at a certain exchange rate, and don't have to worry about credit card fees, or exchange rate fluctuations. You know exactly how much something will cost you in dollar terms, and hence in ZAR terms. It is also the cheapest, and attracts the least amount of fees.
Carrying cash is pretty safe, regardless of what everyone else says. You're probably more at risk of losing your dollars when travelling from your house to the airport, and when getting to the plane. After that you can ease up. But tou obviously shouldn't be naive or foolsih either. You need to guard your dollars and keep it safe. But that goes without say for everyday life in South Africa, you're used to it already, so you'll be fine overseas, especially in East Asia. Almost all hotels will have a safe/vault at reception for storage of valuable items. You can put the bulk (60-70%) of your currency in this main safe/vault. Your hotel room will also have its own safe, protected with a pin code that must be entered on a keypad. Most hotels secure these safes pretty well - they are bolted into the wall. Keep some money in the hotel room safe (20-30%), so you don't have to bother reception each time. Also, keep some money (10-20%) in your wallet for daily use and spending. Don't put all your eggs in one basket!
From what I calculated, the banks (FNB in particular) make big profits on foreign credit card transactions. It really is a rip-off. But DO take your credit card with you. You never know if you might need a bit of extra moola, or you find that expensive something you've been looking for and just have to buy it now, or in case of an emergency. But try to avoid using it.
Buy your currency from
Global Foreign Exchange if they are near to you. They had the best rates I could find, and from what I've heard, they even supply US currency to most of the banks. Spend an hour phoning all the banks, and several Forex companies, and get quotes. Do it within an hour so you can compare the different rates accurately.
Also, when you buy your dollars, make sure you get most, if not all of your notes, in 100 dolllar bills. The money-exchangers overseas will give you a lesser rate for smaller bills, less than 100 dollars. The smaller the bill, the less the rate becomes. Some won'even t accept anything less then 50 dollars. Also, when your are overseas, the smaller money exchangers will give you the best rate. The bigger, well known, "branded" money exchangers will give you a rate that is much lower, sometimes shockingly lower. So don't go and exchange all your dollars at once, especially when you arrive at the airport. Exchange maybe just 50 or 100 dollars for taxi fare/transport to your hotel, and snacks/food/drinks...
And lastly... enjoy the experience. East Asia is a nice place to visit. Lots of friendly people. The culture/lifestyle is very different. Remember to bargain/haggle, especially in Bali.