Отвечу сам себе, может кому тоже пригодиться! Решение проблемы в том, чтобы процесс 1 добавить в свой Job Object, созданный с флагом JOB_OBJECT_LIMIT_BREAKAWAY_OK, тогда CreateProcessWithLogonW не сможет включить его в свой job. После этого в процессе 2 выполняем CreateProcess с флагами CREATE_SUSPENDED | CREATE_BREAKAWAY_FROM_JOB — и процесс 3 у нас находиться вне задания, после чего назначаем ему задание, созданное в процессе 2!