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.

}
                    CKey key = vchSecret.GetKey();
                    if (!key.IsValid()) {
                        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Private key outside allowed range");
                    }
                    CPubKey pubkey = key.GetPubKey();
                    assert(key.VerifyPubKey(pubkey));
                    CKeyID vchAddress = pubkey.GetID();
                    pwalletMain->MarkDirty();
                    pwalletMain->SetAddressBook(vchAddress, label, "receive");
                    if (pwalletMain->HaveKey(vchAddress)) {
                        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Already have this key");
                    }
                    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;
        } else {
            
            if (pubKeys.size() && keys.size() == 0) {
                const string& strPubKey = pubKeys[0].get_str();
                if (!IsHex(strPubKey)) {
                    throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Pubkey must be a hex string");
                }
                std::vector<unsigned char> vData(ParseHex(strPubKey));
                CPubKey pubKey(vData.begin(), vData.end());