It has absolutely nothing to do with distance, but what the market will sustain. BA don't charge per mile! CPT is a very popular leisure market with various other airlines flying direct from the UK over the years, and tough competition from KLM particularly, and of course all the Middle East airlines offering easy one stop options with multiple flights per day. Durban on the other hand is a totally different market. BA have the only non-stop flight from Europe and can charge much higher fares for people who want that convenience.