Trying to answer your question
I will try to answer your first question. How do you have configured the StepExecutor? We are using the SimpleStepExecutor and setting the StepOperations to a TaskExecutorRepeatTemplate to achieve multi-threading (same VM, though). This class will create the threads for you and run the ChunkOperations in each configured Thread. So it seems that you should try to add the transaction handling aspect to the RepeatTemplate assigned to the ChunkOperations.
Was that the approach that you tried and did not work?
Still, I do not know how to do partitioning (we are processing files, so have synchronized the 'next()' of the next file in the ItemProvider which works for all the threads in the same VM).
Hope this helps.