All the bits that were down are now back up. I've basically gone through all the code with a fine toothed comb and tried to make sure all of the database queries were properly indexes and as optimised as possible or to put it a simpler way - make sure the code isn't hammering the server.
However. There is still a few hours a day where the site just decides to be a bit pony. It seems to occur between 4.30am and 8.30 GMT. Now, normally at 6am GMT, there is a back-up process which normally brings the site down for a minute or two -- this time is when their is least people on the site -- and this is somehting that can't be helped.
But, the fact that these downtimes seem to occur at a similar time, makes me think there may be other automated processes (either things I've coded myself, from the hosts, or built in to the forum software), which are causing lots of strain. That's the next thing I need to look into.
Apologies once again for all this. Hopefully things are going in the right direction. Though to me it seems like i'm always going round in circles :/