I found I am not able to rewind or fast forward on some songs only. I did a Factory reset and it still does the same thing until I realize it maybe related to the file size. In my case, smaller files, like 2GB or 3GB files will rewind just fine. Larger than 4GB or so I think, will not be able to rewind/forward. I think it is because of out of range of the data type you used in your code. If you choose to use long(or similar data type) you maybe able to solve the problem.
In your code, if you implement pre-buffer or double buffers, it probably will improve gapless and stuttering problems unless the processor is underpowered which is unlikely. Just my two cents.