Hi,
if anyone should experience the same problems I did, here a quick rundown of what is happening.
Bacnet4j allows the user to bind a local device to a specific ip-address. This function is needed if it is necessary to host multiple local devices from one host. In Windows virtual networks can be created and with .withLocalBindAddress(virtual interface address), the device is henceforth reachable under that address.
In Linux on the other hand, binding broadcast ports like UDP in Bacnet to a specific address of a virtual network is forbidden, but fails quietly, there are just no packets received by the socket. If this is done by the user the packages of the UDP broadcast (for example WhoIs sent from YABE) do reach the Linux machine and even show in wireshark/tcpdump. But they are dropped before they reach the socket, this functionality is handled by the kernel itself and i could not find a way to turn it off (purpose of it is anti spoofing).
So hosting multiple localdevices with different IP addresses on the same port is a non trivial problem in Linux.
I managed to get it working tough, my solution is part of a bigger project that will be published, if anyone is interested, i'll post a link to it once it that is done.