Is this OP_RELATIVECHECKLOCKTIMEVERIFY a new op code and is it designed to basically replace nLockTime?
Peter Todd is proposing OP_CHECKLOCKTIMEVERIFY as a new opcode and the relative version was been considered too.
The locktime field is still kept. OP_CHECKLOCKTIMEVERIFY just compares against the locktime.
If you have
400,000 OP_CHECKLOCKTIMEVERIFY
That means "Don't include this in a block unless the transaction's locktime is at least 400000". There is already a rule that says that you can't include a transaction with a locktime of 400000 until block 400000 already.
This means that the transaction can be tested without needing to know what block it is in.
For example, if the block had two inputs which scriptPubKeys of
"400,000 OP_CHECKLOCKTIMEVERIFY"
"410,000 OP_CHECKLOCKTIMEVERIFY"
and the transaction had a locktime of 420000, then this transaction is valid.
"400,000 OP_CHECKLOCKTIMEVERIFY" means "verify the locktime at the transaction is least 400000"
"410,000 OP_CHECKLOCKTIMEVERIFY" means "verify the locktime of the transaction is at least 410000"
This is true in both cases, so the transction could be included one block 420000 is reached (since that is its locktime).
By checking against locktime, and still using locktime to prevent the transaction getting into a block, it means you don't have to keep checking the tranasction.
If OP_CHECKLOCKTIMEVERIFY checked the block height directly, then the transactions would need to be checked after every block is created.