Funny story, my C++ class is less than half as quick as its BP equivalent...

What target are you building your native class for, debug, development, shipping? This has an effect on the optimizations done during the build process.
Same question goes for the engine you’re using and whether it’s a custom build from GitHub source or a binary version from the Epic Games Launcher?

One thing you could optimize is the square root in Velocity.Size() using Velocity.SizeSquared() instead will save the “expensive” square root and since you’re comparing against 0.0f you don’t even have to change that side. Note that this wouldn’t be exactly equivalent to your BP anymore.