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.

}
                
                CScript scriptRawPubKey = GetScriptForRawPubKey(pubKey);
                if (::IsMine(*pwalletMain, scriptRawPubKey) == ISMINE_SPENDABLE) {
                    throw JSONRPCError(RPC_WALLET_ERROR, "The wallet already contains the private key for this address or script");
                }
                pwalletMain->MarkDirty();
                if (!pwalletMain->HaveWatchOnly(scriptRawPubKey) && !pwalletMain->AddWatchOnly(scriptRawPubKey)) {
                    throw JSONRPCError(RPC_WALLET_ERROR, "Error adding address to wallet");
                }
                success = true;
            }
            
            if (keys.size()) {
                const string& strPrivkey = keys[0].get_str();
                
                CBitcoinSecret vchSecret;
                bool fGood = vchSecret.SetString(strPrivkey);
                if (!fGood) {
                    throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid private key encoding");
                }
                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));
                CBitcoinAddress pubKeyAddress = CBitcoinAddress(pubKey.GetID());
                
                if (!isScript && !(pubKeyAddress.Get() == address.Get())) {