I just returned from South Africa yesterday and over the course of the last two weeks flew 9 flights on SAA. All flights, including domestic, regional and international flights were on-time, and in most cases earlier. A three lay-over in JNB should provide you with plenty of time.
I was pleased to see how the construction at the JNB Airport was progressing along. A connection from the international arrivals area to the the domestic departure area is now only about 5-10 minutes walk, all inside the new terminal. You no longer have to walk outside along the sidewalk or transit the parking garage to get from one terminal to the next. It makes the transfer in JNB, much more pleasant and they have added several new shops and restaurants along the way.