As Jepael says, they are fetched only once. In the meantime, the prefetch buffer is refilled during idle data bus cycles, so by the time the instruction completes, the buffer is usually full again.
This means that if you have code that uses rep movsb to modify data under the prefetch buffer, you should technically prefetch during the rep movsb, not after it.
However, when exactly you should prefetch, and how much you should prefetch, that depends on the number of idle bus cycles. So the only way to get it 100% correct is to completely emulate the data bus in a cycle-exact way.
These should be corner cases though. In 99.999999% of all cases, having the prefetch buffer full at every instruction should do the job. I suppose in the case of a rep movsb, you should prefetch after the rep and after the first movsb (you could do it after every movsb, because it will be full after the first one anyway, might make things simpler).