After looking at the code for a couple of days, I have finally got TCP buffering working to the point that the server works when getting data from a test upstream server that pauses while sending a TCP packet to Deadwood.
This version of Deadwood passes all SQA tests (including the new one that tests TCP buffering), and can be downloaded here
Next: Make sure Deadwood works when both the upstream server pauses while sending the DNS-over-TCP reply, and the downstream client pauses while getting the DNS-over-TCP reply.
Then: Release Deadwood 2.4.01
Then: Work on getting TCP partial sends working in the 2.3 branch of Deadwood.