Michael Gronager has figured out why:
I now exit the ipc thread at startup by inserting:
void ipcThread(void* parg)
{
ipcShutdown();
return;
...
Bitcoin-Qt is now running nicely using around 0.9% CPU. So it seems like the culprit was indeed line 31:
if(mq->timed_receive(&strBuf, sizeof(strBuf), nSize, nPriority, d))