As I wrote very early on, you need to respect the fact that the d.c. system doesn’t have to be referenced to ground/earth, so everything needs to be galvanically isolated at some point, the closer to the d.c. loop, the better (from the point of view of your safety when working on the system). And remember that 500 V d.c. can be lethal.
Depending on the max. input voltage of your chosen ADC, the 10 A shunt could be an embarrassment. I don’t think it’s realistic to calculate the current from the difference between two voltages. Have you considered the stability of the dropper resistors? If your shunt is (say) 200 mV @ 10 A, then for 5% accuracy in the current, you need 5% stability in the difference between the two voltages, i.e. the two need to stable to within 5% of 200 mV in 500 V. That’s a tall order. Any standing inaccuracy can be calibrated out in the maths, but stability can’t be. You need to measure the voltage directly, or find another way.
I think a Hall effect device in place of the shunt would be a better approach. Typically, a Hall effect device will give isolation and around 2% accuracy or better.
If you’re OK with the requirements for creepage distances etc at 500 - 700 V, then the “linearised” opto-isolator (the Vishay IL300 that Stephen mentioned) in the circuit in the application note would give you isolation and more than adequate linearity, but to maintain isolation, the servo op.amp on the high voltage (input) side needs either its own isolated power supply, or to take its power from the d.c. loop, which complicates the design. That must be totally separate from the power supply for the low-voltage side.
Having got your safely isolated and low voltage signals, then the rest is comparatively easy - you can quite safely work on the ADCs and processor, plug in whatever you need to extract the data, live or from the logs, and generally do as you would with an Arduino or emonTx on the bench.
[Caution: the Hackaday link contains some very wrong “facts”, so beware.]