These are the (very helpful) docs I was following. Turns out that the jumping at random bits was the clue... my SPI timing was not set correctly.
I needed to initialize my SPI connection with the timing edges explicitly stated (SPIC_SCK_LEAD_RISING, SPI_SAMPLE_TRAILING).
For future reference to anyone using the LUFA SPI driver, my working command looked like this:
SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_SCK_LEAD_RISING | SPI_SAMPLE_TRAILING | SPI_ORDER_MSB_FIRST | SPI_MODE_MASTER);
I think the SPI_SPEED_FCPU_DIV_XXX can be set differently if necessary, but I'll defer to someone with a better understanding of SPI.