Valgrind offers client requests (http://valgrind.org/docs/manual/mc-manual.html#mc-manual.clientreqs) that can be used to flag a region of memory as undefined (VALGRIND_MAKE_MEM_UNDEFINED).
It may be useful for Carpet to mark regions that it poisons as undefined so that Valgrind triggers on them. Right now poisoning "initializes" the data as far as valgrind is concerned. Also cycling timelevels does not mark them as invalid as far as valgrind is concerned.
I would envision an ExternalLibrary valgrind that provides an interface that Carpet can use (or just have Carpet check HAVE_VALGRIND).