I found the sucker - it's the survey indeed. I deleted it after copying its contents (from the survey) and I have sweet dotLRN back up and running wonderfully, not consuming 99% of the CPU cycles as earlier. Now this suggests some serious rethink of the survey module's interaction with the rest of the database. The fault is definitely with the population of the DB.
So, just what query or page in the survey module do you say was
causing the trouble? This might be quite easy to track down if you
have the Developer Support package installed and turned on.
As it stands, you've basically said "something somewhere in the survey
package sometimes takes a lot more CPU than I think it should", which
is not especially useful as bug report.