After some digging, I found that root motion is set for the entire slot. It is not checked when switching from one AnimSegment to another (doing this will make my life easier)
Root motion is first checked in AnimMontage.cpp line 737:
The SlotAnimTracks is an array which contains all the slots in the montage.
FSlotAnimationTrack then contains an array of all the segments. Now if there is any way I could change this piece to additionally check for root motion when moving from one segment to another within the slot, my problem will be solved.