The way I'm doing it is faint = release and catch the first Pokemon in an area UNLESS it is one already in your party/box, hence the second Ratata. In which case you catch the first one you don't have. I think that makes sense.
The variant of the dupe clause I've been running is that once you capture (or attempt to capture) something, you get no more chances at anything from the same evolutionary set. This has allowed me to ignore all Magikarp since capturing the red Gyarados at the lake of rage, but on the other hand, having knocked out a Krabby without capturing it in Olivine city, no more Krabby or Kingler for me.