I tried this in my /etc/crontab:
Original:
$this->bbcode_second_pass_code('', '&reboot username vncserver')
Now:
$this->bbcode_second_pass_code('', '&reboot username dbus-launch vncserver')
And now I can connect without any dbus errrors and without having to login with the user. The DISPLAY workaround is not needed anymore. The only thing my ~/.vnc/xstartup does is $this->bbcode_second_pass_code('', 'startxfce > /dev/null 2>&1 &')
So it may be true what I thought: dbus now under normal circumstances is only launched at user login. And when the user didn't login, there's no dbus.
But my new launch method doesn't load the new freeetype font hinting variables from /etc/profile.d/freetype2.sh (a recent change in Arch). I wonder what else is not loaded.
I'd be glad for any hints. The original method and the DISPLAY workaround both respected the new freetype variables.
Edit: Fixed Freetype this way:
$this->bbcode_second_pass_code('', '&reboot username . /etc/profile; dbus-launch vncserver')
But I admit I don't fully know what's going on and why everything worked before without those additions.