When I run `scantxoutset` via RPC using big range (e.g. 10000) on XPUB, the progress report indicator (`scantxoutset status`) reports 100% at start (while the keys are being derived). This is most probably the result of the previous operation. The progress is only reset to zero when the actual scan starts. I would expect the progress is set to zero before the keys are being derived.

Output of periodic calls to `scantxoutset status` while performing long operation.

```
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 0 }
{ progress: 3 }
{ progress: 6 }
{ progress: 9 }
{ progress: 12 }
{ progress: 15 }
{ progress: 17 }
{ progress: 20 }
{ progress: 23 }
{ progress: 26 }
{ progress: 29 }
{ progress: 32 }
{ progress: 35 }
{ progress: 37 }
{ progress: 40 }
{ progress: 43 }
{ progress: 46 }
{ progress: 49 }
{ progress: 51 }
{ progress: 54 }
{ progress: 57 }
{ progress: 60 }
{ progress: 63 }
{ progress: 66 }
{ progress: 68 }
{ progress: 71 }
{ progress: 74 }
{ progress: 77 }
{ progress: 80 }
{ progress: 82 }
{ progress: 85 }
{ progress: 88 }
{ progress: 91 }
{ progress: 94 }
{ progress: 97 }
{ progress: 100 }
```
{
    return RPCHelpMan{"getblockchaininfo",
                "Returns an object containing various state info regarding blockchain processing.\n",
                {},
                RPCResult{
                    RPCResult::Type::OBJ, "", "",
                    {
                        {RPCResult::Type::STR, "chain", "current network name (main, test, signet, regtest)"},
                        {RPCResult::Type::NUM, "blocks", "the height of the most-work fully-validated chain. The genesis block has height 0"},
                        {RPCResult::Type::NUM, "headers", "the current number of headers we have validated"},
                        {RPCResult::Type::STR, "bestblockhash", "the hash of the currently best block"},
                        {RPCResult::Type::NUM, "difficulty", "the current difficulty"},
                        {RPCResult::Type::NUM, "mediantime", "median time for the current best block"},
                        {RPCResult::Type::NUM, "verificationprogress", "estimate of verification progress [0..1]"},
                        {RPCResult::Type::BOOL, "initialblockdownload", "(debug information) estimate of whether this node is in Initial Block Download mode"},
                        {RPCResult::Type::STR_HEX, "chainwork", "total amount of work in active chain, in hexadecimal"},
                        {RPCResult::Type::NUM, "size_on_disk", "the estimated size of the block and undo files on disk"},
                        {RPCResult::Type::BOOL, "pruned", "if the blocks are subject to pruning"},
                        {RPCResult::Type::NUM, "pruneheight", "lowest-height complete block stored (only present if pruning is enabled)"},
                        {RPCResult::Type::BOOL, "automatic_pruning", "whether automatic pruning is enabled (only present if pruning is enabled)"},
                        {RPCResult::Type::NUM, "prune_target_size", "the target size used by pruning (only present if automatic pruning is enabled)"},
                        {RPCResult::Type::OBJ_DYN, "softforks", "status of softforks",
                        {
                            {RPCResult::Type::OBJ, "xxxx", "name of the softfork",