Would it be completely unreasonable to allow `fundrawtransaction` to use unsafe outputs?

I understand this means the resulting transaction may be invalidated whenever the unsafe output I'm relying one disappears (e.g. because the transaction that produced it was RBF-ed) but in my case that's ok, I'll react to that and re-publish the tree of child transactions accordingly.

But let me know if you think that's too much of a footgun for users, in that case I'll architect my solution differently.
return nullptr;
            }
        }
        Instance->chainStateFlushed(chain.getTipLocator());
        Instance->GetDatabase().IncrementUpdateCounter();
    }
    {
        LOCK(cs_s);
        for (auto& load_ : g_load__fns) {
            load_(interfaces::MakeWallet(Instance));
        }
    }
    Instance->SetBroadcastTransactions(gArgs.GetBoolArg("-broadcast", DEFAULT_WALLETBROADCAST));
    {
        Instance->WalletLogPrintf("setKeyPool.size() = %u\n",      Instance->GetKeyPoolSize());
        Instance->WalletLogPrintf("mapWallet.size() = %u\n",       Instance->mapWallet.size());
        Instance->WalletLogPrintf("m_address_book.size() = %u\n",  Instance->m_address_book.size());
    }
    return Instance;
}
const CAddressBookData* CWallet::FindAddressBookEntry(const CTxDestination& dest, bool allow_change) const
{
    const auto& address_book_it = m_address_book.find(dest);
    if (address_book_it == m_address_book.end()) return nullptr;
    if ((!allow_change) && address_book_it->second.IsChange()) {
        return nullptr;
    }
    return &address_book_it->second;
}
bool CWallet::UpgradeWallet(int version, bilingual_str& error)