Internal flights are hassle free, reliable, quick and relatively cheap. Internal flight operators (budget) include the following:
Kulula airlines
One Time airlines (I have flown with them more than one time actually)
Mango airlines
South African Airways (still has some cheap flights - GBP50 one way to main cities)
British Airways (expensive)
Air Namibia
Just go to
www.google.co.za and search for the specific airlines online booking website.
Also think about car hire, Bloemfontein, Rustenburg, Polokwane, Nelspruit and Durban are all within easy driving distance of Johannesburg on excellent roads.
The train network is not reliable nor particularly safe!