<!-- Describe the issue -->

When syncing after a period of being offline, a transaction that the wallet received during the offline period was seen in a block, and the transactions tab in the QT ui showed the transaction.  However the transactions was not shown as "confirmed" but instead "open".  Also, the number of confirmations seems to be incorrect.

<!--- What behavior did you expect? -->

I expected the clock icon that fills in as it downloads more blocks, followed by a check mark once it sees 6 confirmations.

<!--- What was the actual behavior (provide screenshots if the issue is GUI-related)? -->

Instead there was no icon, and a mouse-over showed "open for next 130 blocks".  This confused me as the transaction wasn't a coinbase tx, didn't use op_csv or anything like that.  The transaction did have a locktime, but the bitcoind wallet has been setting that for a while.

Eventually the icon switched directly to a check-mark, and a mouse-over showed the number of confirmations.  However, the number of confirmations is too low by about 30 (a bit of a guess as I get tx details and then check the block height the UI reports it's synced to).

The receiving address was a bech32 native segwit v0 address, which may be related.  I asked @theuni and he pointed out code around here: https://github.com/bitcoin/bitcoin/blob/048ac8326b6952244f6e4453f4f8f6ab423eb926/src/qt/transactionrecord.cpp#L177 
which looks related; the ui may not be updating finality properly.

<!-- What version of Bitcoin Core are you using, where did you get it (website, self-compiled, etc)? -->
system:
0.16.0, linux, downloaded from bitcoincore.org, checked gpg sig.

<!-- What type of machine are you observing the error on (OS/CPU and disk type)? -->

Ubuntu 16.04, laptop hard drive.

This is not a huge issue but I think it could be confusing to users as it indicates that the transaction is not confirmed even though it really is.  The UI eventually displays confirmed though.

{
    QString status;
    switch(wtx->status.status)
    {
    case TransactionStatus::OpenUntilBlock:
        status = tr("Open for %n more block(s)","",wtx->status.open_for);
        break;
    case TransactionStatus::OpenUntilDate:
        status = tr("Open until %1").arg(GUIUtil::dateTimeStr(wtx->status.open_for));
        break;
    case TransactionStatus::Unconfirmed:
        status = tr("Unconfirmed");
        break;
    case TransactionStatus::Abandoned:
        status = tr("Abandoned");
        break;
    case TransactionStatus::Confirming:
        status = tr("Confirming (%1 of %2 recommended confirmations)").arg(wtx->status.depth).arg(TransactionRecord::RecommendedNumConfirmations);
        break;
    case TransactionStatus::Confirmed:
        status = tr("Confirmed (%1 confirmations)").arg(wtx->status.depth);
        break;
    case TransactionStatus::Conflicted:
        status = tr("Conflicted");
        break;
    case TransactionStatus::Immature:
        status = tr("Immature (%1 confirmations, will be available after %2)").arg(wtx->status.depth).arg(wtx->status.depth + wtx->status.matures_in);
        break;
    case TransactionStatus::NotAccepted:
        status = tr("Generated but not accepted");