Can I cancel an offline transaction with this approach? (opposite of nLocktime) I would like to cancel a transaction I sent offline, and am looking for ways to prevent it from being accepted by the network.

Will the Bitcoin client prohibit the entire Tx if there is even on input that is already spent?

If the answer to that question is "yes", then what if I created "control addresses as follows:


Generate 10,000 addresses and send each 0.0001 BTC 
After N confirmations pass, create an offline transaction
Consume one of the balances in step 1 above in the offline Tx


I suspect either one of the two scenarios will occur:


User broadcasts offline Tx, and completes the Tx
I spend the balance of the "control address", and when the user tries to spend the offline tx, they are denied because one of the inputs it refers to has already been spent.
???


Question


Is this a correct approach to canceling offline transactions?  
What optimizations can be made?  I dislike having the overhead of having to sign each control input with a new private key each time.
The approach is correct. You don't have to use different private keys, you can use the same private key and same address for each of the control outputs.