The problem is that properties collects all properties of the job object, so all getter methods get called. Unfortunately, also getXml() is called which generates the config XML for the job. And there starts the recursion because to generated the XML, all configure block will be evaluated. And the configure block will try to generated the XML which calls the configure block and so on.
As a workaround I tried to make the "Process Job DSLs" step abortable by checking the thread's interrupted flag and throwing a InterruptedException. But that didn't work because the exception is caught somewhere and never aborts the build step.
Another solution would be to rename getXml() and getNode() to createXml() and createNode(). That would change the API, but will break the recursion since properties no longer causes the XML to be generated.