Since you are flying first class, I'd take the overnight flight from LHR-JNB. BA has sleeper seats and hands out pajamas onboard. The flight is long enough for a good dinner, a good sleep, and breakfast on awakening.
My advice would differ if you were flying in the back - but you aren't. First class is great on BA.