You can stay airside by following "flight connections", avoiding the need to clear customs and enter the UK. Airside includes quite a few shops at LHR, particularly in T4, so maybe it is the most pleasant airport to do this at (however you can only be airside at the terminal from which your flight to JNB departs, which is T1 if flying BA or T3 if flying most others). But 8 hours is a lot to stay at an airport, particularly with 8+ hour flights before/after. If you have no airline lounge access, there are several "paid-for" lounges available at LHR for a fee.