2.3.0: run each module in its own thread (instead of each job), and allow a 'max processing time' for jobs that take way too long or crash