I am also looking for a good solution to this problem.
What I am doing at the moment is keeping a field with the process instance id (dbid) in my domain object and use a custom hibernate query with a new constructor to dynamically create objects that contain the joined data from the jBPM task and the domain object.
But this is pretty ugly since you have to do all the user and group checking which the findPersonalTasks() method is doing yourself inside the hql query, on the other hand you can do paging and result filtering.
You could do the opposite, meaning that jBPM process instance is the master. So you keep some domain data as process variable (document id, document name, etc) so task can present it quite easy without additional query to data base. If some one will decide to start work on the task then you load additional domain data.