I am not sure I understand the issue.
GetInputKeyAtDistanceAlongSpline is going to get you the result of the Duration of the Spline, based on the distance. As an example:
GetInputKeyAtDistanceAlongSpline( GetSplineLength( ) / 2 ) where Duration is 3, will give you 1.5f.
GetInputKeyAtDistanceAlongSpline( GetSplineLength( ) / 2 ) where Duration is 30, will give you 15.f.
Using this result as an argument for GetLocationAtDistanceAlongSpline( ) will of course be different than the direct ( Length / 2 ) because the result is based on the Duration of the Spline and not a literal distance.
Please correct me if I am wrong.
Thanks.