It turned out to be an error on my part in assuming systemd's event library abstracts sources from watched fds added to epoll. saproxy now manages its own bitwise operations and only uses a single source/watcher per socket fd.