Fix crash caused by VirtualRange mismatch
The value sometimes doesn't equal the passed item, but we should remove it anyway.
We confirm that it is a valid item by binary searching for the item specifically instead of an overlap and that the index returned is valid.
We don't need to check for equality since we're working with a NonOverlappingRangeList, so there is never more than one RangeItem at a given address.