That sounds strange, as BASS_ASYNCFILE shouldn't affect the accuracy of setting or getting the position. But it might cause a BASS_ChannelSetPosition call to take a bit longer, eg. if that has to wait for an asynchronous read to finish before seeking in the file. Perhaps that's making a difference? You could try logging and comparing the time taken by the BASS_ChannelSetPosition calls to see if there is indeed a difference.
Looking at the code in your GitHub link, it appears that all playback is through a mixer? Is the issue that 2 sources that should start at the same time in the mix are not? If so, please try locking the mixer to add the sources, which will ensure that they start together in the mix. For example:
BASS_ChannelLock(mixer, true); // lock mixer
BASS_Mixer_StreamAddChannel(mixer, source1, flags); // add 1st source
BASS_Mixer_StreamAddChannel(mixer, source2, flags); // add 2nd source
BASS_ChannelLock(mixer, false); // unlock mixer