RTL failed to recover from inverted flight and spun backwards into the ground

Things start at 10:44 after takeoff, 12:16 in the osd video offset
I was flying manually, lost sight, but sadly I was almost fully inverted by the time I engaged RTL.
However, when it takes over, very weird things happen, the video speaks a thousand words:
RTL pitches to 100 degrees (still inverted) and apparently uses the elevator to pitch towards the ground, making the ground scroll backwards.

It’s hard to say if RTL would have recovered with more altitude, but it did weird things and not the right steps to recover right away.
http://marc.merlins.org/tmp/2_Inverted_RTL_Crash.BIN
https://youtu.be/wFwTneYeNY4?t=12m17s (offset 12:17)

Probably not related, but another weird thing, CRUZ was hopping up and down earlier in the flight. I had never seen it do that before check
https://youtu.be/wFwTneYeNY4?t=06:52s (offset 06:52)

Filed a bug here: https://github.com/ArduPilot/ardupilot/issues/3875

@tridge had a look with me (thanks Tridge), I think we found at least 2 problems (one fatal in this case), and a potential 3rd one.
Details here: https://github.com/ArduPilot/ardupilot/issues/3875

Concerning the CRUISE hopping up and down: Did you have Terrain Following enabled?

Cruise jumps up and down on me as well without terrain following on.