tl;dr
If someone is shitting blocks like a machine gun and network diff is not able to catch up, so blocks still come out in 1 sec periods between them
pool is not able to make all its work and stops working
TODO;
re-target diff from block to block in good way.
The difficulty or speed of blocks is not related to the 'transaction too large' error you get.
A 'transaction too large' error is when you have too many inputs that make up a transaction, causing a transaction that is too large (in bytes). You can solve this by combining the inputs by sending it to a new address.
See here for more information:
http://bitcoin.stackexchange.com/questions/37172/transaction-too-large-error
https://bitcoin.stackexchange.com/questions/5583/how-can-i-combine-all-the-tiny-amounts-ive-received-to-minimise-transaction-fee