Seek backwards by force decoding, align seeks.

It seems like we can only (safely) seek to sample boundaries, which makes
sense.  Also, we get wrong data unless we "warm" it by seeking from 0, it
seems like.

This makes looping produce correct data.  Fixes #6970.
Seek forward from 0 as well.

Otherwise we also get incorrect data.