byte chip5[24];
...
int randomnum5 = random(0, 255);
SPI.transfer(chip5[randomnum5]);
randomnum5 will be in the range 0 to 254, right?
So you are indexing into chip5 in that range, but chip5 is only 24 bytes.
Ooops, off the end of the array. That will give random results.