Isn't "In practice client software can detect cycles and prevent them from being formed" highly risky? You are transferring the onus to the client and if there is a bug in the client that account can be locked out forever.
I feel this is something that should be handled at the level of blockchain itself. Would over to hear your thoughts.