It seems that I've run into the same problem that Juri Pakaste did with Straw. Now that Bookcase uses a proper DTD at a canonical location, libxml seems to be grabbing it all the time from the server. And that takes too long.
One way around it is to properly register the DTD in the installed location using --with-xml-catalog option in the configure script, which doesn't happen by default. If Bookcase is compiled with that option, then libxml doesn't go online to find the DTD, it just looks at the installed version.
But I want to find out how to disable this in libxml. I don't need DTD parsing.