I have this version of rpm installed: app-arch/rpm-4.0.4-r2. Today I saw that a new revision was out (r3). As I don't need rpm (it's a dependency of kdeadmin) I injected app-arch/rpm-4.0.4-r3 to avoid this compilation. Now if I do an "emerge -p clean", portage wants to remove the -r3 version. I think that injected packages should not be cleaned if they are the newest version (and not the real one of course). So in my example, both version of rpm should be protected. I'm using portage 2.0.13.
OK, with Portage 2.0.19, injected packages will have a COUNTER file (so they will not be unmerged by clean) but they don't have a SLOT so they will always "stick" until they are manually unmerged. Having them eventually auto-removed would require the user to specify a "slot" when calling "emerge cat/pkg-v" which would be cumbersome.