Hsssnggg *calms down*
I finally found the cause. It was the link0 flag that gets set on the interface by default.
After hours of fiddling, swearing, reconfiguring and googling I stumbled upon this thread:
http://unix.derkeiler.com/Mailing-Lists/FreeBSD/current/2004-02/1186.htmlThe 40 byte thing made perfect sense, also that he said he could only ping the box, as ping packets are <40 bytes.
So doing "ifconfig fxp1 -link0" did the magic and now everything works as expected.
I'll check if some php file sets this flag and remove it.

Update: So it seems it was sufficient to just remove the few occurrences in interfaces.inc where the link0 flag got added to the parameters to ifconfig.
As far as I understand this feature normally helps saving some CPU time (if it works), so it should not generally be removed.
Maybe its faulty drivers in FreeBSD, maybe faulty hardware, maybe both. I'm not the expert here. It might be nice to have an extra option in the web interface to disable this feature, with a hint to the symptoms. Might save someone else some sleepless nights..

In my case the card was an Intel PRO/100 S Dual Port Server Adapter.