Actually, did you test this with a custom source? What I see on Windows is that Start(new_position):
* stops the source; * flushes; * starts again with new position.
I noticed this extra stop when I tried mfplay API to see what SetPosition() is doing - depending on a the player state it's either Stop->Start->Pause or Stop->Start. Turns out this might be what session does internally.