I fixed the issue by changing the methodology.
Instead of trying to run the slideshows at the same time, relying on delays to have them transition in succession, I set all slideshows to activate manually.
Here's the code I used. It uses a "sets" array of unique selectors which contain the slide sets. The transitions will happen in the order given.
var $banner = $('.banner');
var sets = [".r1-c1", ".r2-c4", ".r1-c6", ".r2-c2", ".r1-c5", ".r1-c3", ".r2-c6", ".r2-c1"];
var current = 0;
// setup slideshows
$.each(sets, function(index,value){
$banner.find(value).cycle({
'timeout' : 0,
'speed' : 1000,
'skipInitializationCallbacks' : true,
'after' : onAfter
});
});
// run after slide transition
function onAfter(){
$banner.find(sets[current++ % sets.length]).cycle('next');
}
// initiate first slideshow
$banner.find(sets[0]).cycle('next');