!act #15626 expose DatagramChannel creation in SocketOption

Fixes #15626
I agree with a `ChannelCreator` trait. Then `SocketOption` will have a `def channelCreator: japi.Option[ChannelCreator]`. Option is needed here because multiple `SocketOption` can be passed and we do not know which of them will have a custom channel creation logic. Therefore we have to grab the first one which returns `Some(...)`.