Henry - Good stuff..!
As a solution, why can't you take a help of session partitioning.
And as a second approach, you can split your lookup cache build into channels.
Creating a simple proc at db level will do this split work.
Let me know still you need any info..
