Properly implement code substitutes
cc https://github.com/paritytech/smoldot/pull/960
https://github.com/paritytech/smoldot/blob/41c5d164cb36436ce949d51ffb8ca7b49b2addd9/src/chain_spec/structs.rs

This feature conflicts with warp syncing. It is possible to warp sync over the block specified in a codeSubstitutes, and not be aware that a substitution needs to take place.
This feature conflicts with warp syncing. It is possible to warp sync over the block specified in a codeSubstitutes, and not be aware that a substitution needs to take place.
This is no longer a problem after https://github.com/paritytech/substrate/pull/10600 / https://github.com/paritytech/smoldot/pull/1869