Solved. I blame this on 4 days of less than 3 hours of sleep per night. Ha.
When I draw, I was doing:
glDrawArrays(GL_TRIANGLES, 1, this.numVerts);
I step over the first degenerate vertex as I should. The problem was that, stupid me, this.numVerts was being calculated wrong..
I was doing:
this.numVerts = this.vbuffer.position() / 8;
this.numVerts = this.vbuffer.position() / 12;
You'll see my blocks hold 12 floats per vertex. So chalk this one up to me being stupid.
I suppose it's useful to know that if you tell glDrawArrays(GL_TRIANGLES, 1, x); where x is larger than the currently bound buffer, you can and will overrun it and spill over into surrounding memory.