Я использую для разных случаев оба варианта. Использовать случайный для всех -- можно, конечно, но..
В unbound есть опция вроде outgoing-port-range, разрешаете их и всё. Два правила на 99.9% трафика
tcp wrappres -- это userspace, менее безопасно по умолчанию. Не говоря о скорости..
Багами не зацепило, но один случай всё же был, юзеру надоело копировать пароль от бастиона и он сменил его себе на словарный. Так что с файрволом всё же безопаснее.