I am an electrical engineer, but I've not given CDI circuits any thought before, and while I could come up with some electronic mechanisms, not sure they would be practical. Usually when I start with something I don't know anything about, I look through the internet for ideas. There may be very simple design ideas for this particular problem, but I have no idea. I've spent only a few minutes looking into this, so this might all be FOS (Full of Shit), but here are a few observations:
Glancing at your chart and accounting for the +/- 2 deg angular tolerance, there seems to be about a +/- 10% tolerance in the RPM axis. That would be a reasonable tolerance for an analog circuit that uses a capacitor based circuit to establish some time/rpm reference. I don't think using the crank signal amplitude for that would provide this kind of accuracy over the life of the system, and changes in pickup coil performance would directly affect the spark advance, something I'd be concerned about.
The first few home-brew circuits I found all used PIC microcontrollers to figure out the advance based on RPM. I have not yet figured out how typical analog circuits are done for this application.
I also noticed that the pickup signals have a negative pulse associated with the leading edge of the reluctor, and a positive pulse with the trailing edge, or vice versa. Your oscilloscope shot shows that too. One circuit I looked at used the leading edge negative pulse as input into the (microcontroller based) timing circuit, and the trailing edge positive pulse to trigger a spark at 0deg TDC to facilitate starting. I don't know whether all ignition systems retard for starting, but in Lycoming engines I played with, accidentally firing at 10deg before TDC during cranking typically cracked the starter mount. I think the circuit should fire at TDC or later until RPM information has been established.
I can't invest any time into this right now, but my next step would be to translate the angle vs. rpm curve you got into a time advance vs. rpm curve. That, combined with the location of the reluctor edges available would define what the circuit is supposed to do, and which parts of the curve can be directly derived from the reluctor edges.