Submitting this because I dont have the time (or resources) to debug this atm and need a self-reminder:
On Win32 walletpassphrase does not appear to relock after the designated amount of time as it should and as it does on Linux.
Can someone check this on OSX as well?

bool CanGetAddresses(bool internal = false) const;
    /**
     * Blocks until the wallet state is up-to-date to /at least/ the current
     * chain at the time this function is entered
     * Obviously holding cs_main/cs_wallet when going into this call may cause
     * deadlock
     */
    void BlockUntilSyncedToCurrentChain() const LOCKS_EXCLUDED(::cs_main) EXCLUSIVE_LOCKS_REQUIRED(!cs_wallet);
    
    void SetWalletFlag(uint64_t flags);
    
    void UnsetWalletFlag(uint64_t flag);
    
    bool IsWalletFlagSet(uint64_t flag) const override;
    /** overwrite all flags by the given uint64_t
       returns false if unknown, non-tolerable flags are present */
    bool AddWalletFlags(uint64_t flags);
    
    bool LoadWalletFlags(uint64_t flags);
    
    bool IsLegacy() const;
    
    const std::string GetDisplayName() const override {
        std::string wallet_name = GetName().length() == 0 ? "default wallet" : GetName();
        return strprintf("[%s]", wallet_name);
    };
    
    template<typename... Params>
    void WalletLogPrintf(std::string fmt, Params... parameters) const {