Thanks for all the help, guys. It does seem like it's something to do with the lambda then (how frustrating!). We'll do some more digging and let you know.
Spark plugs were all fine when we checked, so we'll start with the lambda (again!), and keep going from there.