When importing a watch-only address over `importmulti` with a specific timestamp, the wallet's `nTimeFirstKey` will be set to 1.
I think we should add a optional timestamp to `CWallet::AddWatchOnly()` and use it when importing addresses or pubkeys.

throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Consistency check failed");
                }
                
                if (isScript) {
                    CBitcoinAddress scriptAddress;
                    CTxDestination destination;
                    if (ExtractDestination(script, destination)) {
                        scriptAddress = CBitcoinAddress(destination);
                        if (!(scriptAddress.Get() == pubKeyAddress.Get())) {
                            throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Consistency check failed");
                        }
                    }
                }
                CKeyID vchAddress = pubKey.GetID();
                pwalletMain->MarkDirty();
                pwalletMain->SetAddressBook(vchAddress, label, "receive");
                if (pwalletMain->HaveKey(vchAddress)) {
                    return false;
                }
                pwalletMain->mapKeyMetadata[vchAddress].nCreateTime = timestamp;
                if (!pwalletMain->AddKeyPubKey(key, pubKey)) {
                    throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
                }
                pwalletMain->UpdateTimeFirstKey(timestamp);
                success = true;
            }
            
            if (pubKeys.size() == 0 && keys.size() == 0) {
                if (::IsMine(*pwalletMain, script) == ISMINE_SPENDABLE) {
                    throw JSONRPCError(RPC_WALLET_ERROR, "The wallet already contains the private key for this address or script");