I'd go with CRC-16. CRC-8 is too weak and CRC-32 is probably an overkill. Of greater importance is which polynomial to choose. I'd go with one of the standard ones (e.g. CCITT) that are known to work well.
The discussion for what length to choose is rather long but, put simply, it has to do with several factors, such as the overall length of your data, the number of errors that may occur simultaneously (so they don't cancel each other out when computing a CRC), how far apart these are likely to be, etc.
If there aren't any specific stringent requirements, I have a simple rule of thumb: pick a CRC of (about) as many bits as the bits of the address space to protect (e.g., CRC-16 for up to 2^16 bytes).