Best tip is to go as direct as possible especially if going for such a short time. Going through Dubai and the like can be cheaper but really adds on to travel time.
A direct overnight flight is always the best option but recently I have done day flights with KLM (quick transfer in Schipol). Flights have never been that busy and ended up with a few seats to ourselves (Lot of people dont like day flights). Makes an 11 hour flight a lot more comfy if flying economy. Lot cheaper than a BA direct flight as well.
Book as soon as possible for your internal transfer as the flights get booked up quickly. Much of a much price wise but Mango seem to be more punctual than Kulula.
Joburg is safe if you are not stupid same as any city and UBER works really well. Good restaurant to eat at is Wombles in Bryanston for a good old colonial steak house or following the steak theme the meat company in montecasino.
Sundowners in Camps bay is great but if you have time look at going to Hout Bay, Fishoek or Bloubergstrand. Great beaches, views and restaurants and is a change of scenery from the city.