Can you "undo" an nlockTime transaction by spending a single UTXO of it before lockTime's block happens?
Since one of the inputs of the nLockTime transaction has been spent already, the nLockTime transaction becomes invalid, as not all referenced inputs are available for spending.

This is described in the Bitcoin developers guide explicitly as a way to cancel a locktime transaction: 


  If any of the signers change their mind, they can create a new non-locktime transaction. The new transaction will use, as one of its inputs, one of the same outputs which was used as an input to the locktime transaction. This makes the locktime transaction invalid if the new transaction is added to the block chain before the time lock expires.


Before the time or block height specified for the nLockTime transaction is reached, the transaction is considered invalid and will not be stored or relayed by (other) nodes. This has been weakened in 0.9.0 so that transactions one block within nLockTime are accepted for relay but not yet for inclusion.