I looked in the source code and found this in the class DragOperation:
.lastDragOverElement = (DependencyObject)
Should this.lastDragEventArgs.Effects really be set to this.allowedEffects? Shouldn't it be set to the current effects? (like move or copy) I don't claim to get all of the code but it might work just skipping that line of code? Since the EventArgs are reused it should already have the correct values.