Could I mine a non-final transaction?
No.  In the reference client, main.cpp runs this check during "AcceptBlock":

    // Check that all transactions are finalized
    BOOST_FOREACH(const CTransaction&amp; tx, block.vtx)
        if (!IsFinalTx(tx, nHeight, block.GetBlockTime()))
            return state.DoS(10, error("AcceptBlock() : contains a non-final transaction"),
                             REJECT_INVALID, "bad-txns-nonfinal");


which rejects your block if it contain a non-final transaction.  A client that accepts a block containing a transaction with a locktime in the future and sequence number less than std::numeric_limits&lt;unsigned int&gt;::max() would be on the losing side of a fork.