If you "bitbake systemd", then hack something in ${WORKDIR}/image, then "bitbake systemd -c package -f", it correctly adds a taint and then packages the modification in /image. If you then "bitbake systemd", you'd expect it to rebuild the other systemd packages and use them. It does not, it restores the original do_package output from sstate. This would appear to be a bug with the taint handling.
Fix merged to master: http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=d7eb0f5731436bb13f8aacac71527c0372069fb6