Actually, I think I figured out how to handle it:

There's no reason Connection's base class can't always be
EventedObject WHEN Vibe.d is actually available, regardless of
whether the user chooses to use Vibe's sockets or Phobos sockets. The
the only time Connection actually needs to not use EventedObject is
when the user specifies -version=MySQLN_NoVibeD to disable mysqln's
static dependency on Vibe.d (a feature I was planning to add anyway).

So I just statically choose to inherit from EventedObject or plain-old
Object depending on whether MySQLN_NoVibeD exists, and that should work
fine.

Sorry for the noise!