Byte 2 and 13 is always 0x00, i could technically sync to that,
I'm afraid you can't, once you are out of sync with SPI you cannot trust any byte, you could read the last 4 bits from byte 1 and the first 4 bits from byte 2, so you will never see the 0x00.
Conversely if say bytes 5 and 6 are 0xF0 and 0x0F you may read the two 0 nibbles and think that's a 0x00.
You have to use timing.
You can have an ISP oops ISR that simply records the millis() value and your main code checks millis() for the ISP saved value + 15. If true start looking for a frame.
Rob