Gopher+ does in fact resolve your second point by adding in a length header. All of your other points, with the exception of the TCP sliding window gripe, could be addressed through Gopher+ attribute fields. The Gopher+ specification [1] actually specified a "Mod-Date" field as part of the "+ADMIN" attribute, which could be used for caching. Even checksums could be added as well, through something like a "+SHA1" field.
Both the Overbite clients [2] and the Bucktooth server [3] support Gopher+. Pygopherd [4] also implements Gopher+. Many other clients support it as well; see a partial list in Floodgap's guide on using web browsers to access Gopherspace [5].
[1] gopher://gopher.floodgap.com/0/gopher/tech/gopherplus.txt
[2] gopher://gopher.floodgap.com/1/overbite
[3] gopher://gopher.floodgap.com/1/buck
[4] gopher://gopher.quux.org/0/devel/gopher/pygopherd/About%20Pygopherd.txt
[5] gopher://gopher.floodgap.com/0/gopher/wbgopher