I've already stepped around in gdb yesterday and also verified that hiding _Image_TIFF.so fixes the problem so I'm quite confident the reason is mixups of multiply-defined symbols at runtime. The temporary RTLD_LOCAL flag workaround also supports this theory.
Not sure I'd gain much by researching the problem more now that the cause is already understood. I'm more interested in finding a solution!
I'm now attempting to reverse the Darwin-specific -flat_namespace option that (I believe) Bill added. Maybe it's a dead end that brings back other issues but we'll see...