I think your updateCopperLists function may be doing more than it needs to. I don't think you should be calling MrgCop on every buffer flip. This example
http://amigadev.elowar.com/read/ADCD.../node05B3.html certainly looks like it does less.
I have used the second method described here
http://amigadev.elowar.com/read/ADCD.../node0346.html with success before, but can't find my code at the moment to demonstrate.