Id go with @Sputnki, I think its a start/end discontinuity.
theoretically if you get the right LFO rate it should work, as there is no discontinuity in the file, ,as its a multiple of 16.... but finding the exact rate will not be easy. you could also play with pos... (not because this will avoid a start glitch, which as @Sputnki also pointed out, is only relevant to wav files) to find a different 'start point'.
it might be between the two you can 'stumble' on a good combination.
moving to a table wont help really, unless you start processing with a custom C object, to determine suitable start/end points.
shorter loops might help, just because its a little more manageable to see whats going on.
I think without a custom object, its a bit trial and error on the lfo rate/pos and and an envelope to fade the beginning and end.
The other way to solve this is potentially to modify the player, so that it has an option to automatically loop.
it knows when the end of the file is, so assuming no discontinuity in the file (which there isn't in this case) it could loop seamlessly