Master5001, I took the liberty of creating a 16 color bmp in ms paint and opened it in a hex editor. It is just as we suspected. padded edge as the others are. So that part is correct. The pixels are each 4 bits so we were right about that too. I want to take a wild guess on this. There is a possibility that would screw up your "bytewidth". Imagine your width is 5.
bytewidth = width / 2
would be wrong. integer math would knock off a byte. I bet you anything that's it!
try bytewidth = width/2 + (width&1)
if that's not it, something is really screwed up cause my tour of the format shows nothing unusual