The capsule idea would basically be another collision detection.
You create a collision capsule the same as the character in sizing, and offset it’s position at runtime based upon speed / direction. You want the capsule to always be where you Will eventually be. If something is present the overlap event will fire alerting you to it.
You’ll know (dependent on settings) around 5 frames ahead of time “where” you will land.
Which is actually important for predictive animation - though the issue there is far more complex.
Either way, since really all you need is time - to choose an animation - maybe a velocy to decide if you should roll or crash - you can do as I said last.
This is an example logic for it.
Thing is, Fall duration doesn’t tell you much of anything. Fall speed does.
You can get speed with the usual GetLastUpdate Velocity node. You should probably be getting it already for your blendspaces/walk speed. so just pin the Z into a new variable.
This value can go up -4000.000 in my current project.
That would be in fact terminal velocity (which is 5300 is cm per second, so it’s close enough I recon?) I think it’s controlled by the project settings actually. almost 100% positive you could set that to 5300 and force the “splat” animations off of it 
So anyway, to make a long story short. 1 variable. Check if it’s …
Ok backtrack off things I know off hand. Lethal fall distance is avg. of 50ft. to M that’s, around 12. 12m fall is a speed of around 15m per second without math - you can run this formula.
Square of (2 * 9.8m/s^2 * height of fall). 15m/s is 1500 units in unreal.
If the speed is <= -1500 you should use the dead animation.
Then, let’s say that 1/2 of that fall distance is the good distance for a paramilitary or assassin creed parkour enthusiast. that’s a mighty 6m fall.
The math on that I’d have to do so… 29.86=117 sqrt of that is 10 meters per second.
So if the speed is >= -1000.
from that,
death anim if <= -1000
Hard land between -800 and -1000
Mid Land between -700 to -800
soft land between 0 to -700
To do that, I’d convert the jump land state to it’s own state machine, and select the state I want to use based on the speed itself. No overhead. 1 variable.
Screw time. it’s a function of speed because of gravity.
Obviously if gravity change the values won’t hold true. You could script a function to re-caclculate those thresholds and call it at your pleasure depending on game play if you wanted to create something universal.