In terms of CNP, CNP needs to be calculated every time if the packet
is toward to outside of domain because the embedded IPv4 address
could be different. So, I think there is no difference between CNP
and recalculation of L4 checksum from the implementation point of
On the contrary, there is a big difference. The difference is that you are only concerned with L3. L4 can change: UDP, TCP, ICMP, STCP, DCCP, etc, etc, etc. You need a lot of code to handle all existing transport protocols, and you still can't handle future protocols that people might develop.
another FYI. RDP (RFC908, RFC1151) has different layout other than TCP/UDP. anyway a special process is needed for it. "you are only concerned with L3" is a mystery.