Cache target table template tuple and its schema in insert executor, to ...

...avoid serializing default values on every insert.
This solution is problematic. It follows a pattern that I consider risky and I am in the process of trying to eliminate elsewhere -- in spite of the fact that the actual ill effects (segv's from referencing deallocated memory after a truncate table) seem to be mysteriously difficult to reproduce.
The issue is the invalidity of pointers to any (Persistent)Table and its associated TupleSchema after a "TRUNCATE TABLE". I believe that that command has the effect of cloning and abandoning these objects.

A better solution is not to cache PersistentTable's TupleSchema pointers in Executors and to allow them to have cache stand-alone tuple storage BUT to provide a mechanism for swapping the embedded TableTuple's TupleSchema pointer for a current one (assumed identical to the original that drove the storage allocation) in p_execute before use.
That should still allow p_init to cache the default values in the target tuple.