...but I ca'nt quite see how it ended up cross-referencing to another array.
Let me repeat, it is because you are storing references.
If you want copies, use Storable qw(dclone);
Observe
my $ref = [ 1,2];
my $another = [3,4];
my @foo = ( $ref, $another);
my @bar = $foo[1];
die $bar[0][1];
__END__
4 at - line 6.