libmn: don't use an exception to signal empty port waiter condition

__cxa_throw() was taking half the time in these code paths when
profiling the primesieve example. Instead of throwing exceptions
just check if the relevant entry in the `source_waiters` / `sink_waiters`
exists first.