This has been a big change, I'm now 3 days and a 3000 line diff in and I finally got all the remote configuration settings converted to the new up-front parsing.
Seems like quite a lot of work, since the only user-visible improvement is these error messages:
# git annex initremote demo type=directory directory=../foo encryption=none foo=bar
initremote demo
git-annex: Unexpected fields: foo
# git annex initremote demo type=directory directory=../foo encryption=none exporttree=true
initremote demo
git-annex: Bad value for exporttree (expected yes or no)
But this involved paying down technical debt in a big code base, so of course it was expensive.
Anyway, it should now be relatively easy to implement
git annex initremote --list-params-for=S3