I can see that people are now getting sick of the repetitive responses....
O2 uses low frequencies 900mhz on 3G and 800mhz on 4G, in return for doing this they can operate fewer masts and cover wider areas... this however has the following impact....
Lower frequencies have lesser bandwidth capability in general, but because of the fewer mast sites for customers to connect to we find more customers connected to one mast site when compared to providers such as EE who not just use higher frequency bands but also own more bandwidth within those bands, this added by more mast sites being available to get signal where it needs to be yet less customers per mast site.
So with O2 using less bandwidth, on lower bands, serving more people per mast, its no surprise the networks suffers slow speeds.
O2 for many years has used traffic management and proxy management to reduce issues related to congestion, unfortunately O2 has bandwdith issues in more places than you might think and if a mast hasn't even had some extra bands put on to help with the pressure (yours hasn't) then issues will be very bad.
** Above you mention that 3G is slower than 4G, in comparison to the Three network quoted above, it will be as Three use higher band for 3G (2100mhz) compared to O2's 900Mhz and again this is often affected by capacity issues.
** You mentioned that when you approach the mast your able to acheive higher speeds, its most likely that when approaching the mast your signal flips to a cell facing elsewhere that isn't as busy or congested as the one facing in your direction, you may also be getting dual carriage (where two or more cells connect to a your device allowing for more bandwidth to reeach the device.....
Another factor to consider is that a fault has occured with your device that is causing it to go belly up in certain situations, signal sensitivity not working too well, maybe due to iOS update.
I can't stress enough that getting letter of deadlock from O2 Complaints is required if they aren't able to help you, then an Ombudsman needs to take up the case and get O2 to admit the issue and resolve it to a satisfaction (such as removing plan or discounting)
Unfortunately nothing else we can suggest on this matter, its appearing obvious that its a network issue, O2 won't consider it an issue as they don't promise speeds on their network and basically unless service is not working (at all... calls dropping)
I'm sorry if this isn't the resolution you where looking for but it's the only one that can be suggested short of 'deal with it' or switch providers at "whatever the cost"