Hey,
Regarding the first question, we are planning to introduce a new streamlined workflow for text based shader authoring, called “Block Shaders”. This feature will provide functionality similar to the Built-In Render Pipeline’s Surface Shaders for the SRPs, allowing you to implement a lit shader’s surface interface without the need and complexity of modifying the original shader source. Beyond surface shader authoring, additional public interfaces may be exposed by Unity’s shader templates, allowing you to inject your own code and extend other functionalities of the source shader in a simpler and reliable manner. If there are particular shader functionalities and interfaces you are interested in implementing in such manner, please let us know!
You can read about this more in the official announcement thread, where you can find some basic example and a very early prototype: Block Shaders: Surface Shaders for SRPs and more (Public Demo Now Available!)