Correctly read null bytes differently to EOF

null bytes weren't reading properly vs EOF, and synchro packets weren't
being detected in streaming mode.
More robust sync frame detection