It seems that the offline circ processor doesn't do well with large data sets. It essentially locks up the browser until the ajax process returns. With large data sets this causes big problems it seems. It would be better for the script to commit each action one at a time and update the table is it goes along.
Could the background jobs be useful here?