Both the proof and the proof builder can compute the proof id. This is because the proof id is required for signing the stakes.
This diff makes the proof builder build a first proof with no signature (a "proof template") so it can get the proof id from it as needed. This is less efficient but it is never called on a time critical path so the performance drop is not an issue.
Ref T1676.
Depends on D10140.