I still think that option 2 would be best, but given that it is late in the release cycle, I will accept the status quo.
A couple of comments for the record:
Constant folding occurs after AST creation, so doesn't make the AST worse.
The parse tree created by lib2to3 is a concrete parse tree, not an AST. However, it might would sense (as Łukasz suggests) to use it as a basis for an AST designed for tooling and leave the AST generated by the C parser for bytecode generation.
Happy to close this issue now, unless anyone else has something to add.