Hi Matt,
I recommend playing with the tuning parameters available for the block sampler (see help(samplers)).
You can set the "tries", which is the number of propose-accept-reject trials done within one call to the sampler. Since a block sampler groups multiple nodes, they will all be updated or not together. If you stick with the default of tries = 1, and you block say 3 nodes, you will be replacing 3 potential updates (1 for each) with 1 potential update to all, often resulting in faster computation but slower mixing. I have sometimes seen good performance from increasing tries in proportion to the number of nodes in the block (perhaps tries = 0.5 * number of nodes, but experiment).
You can also set the adaptInterval. This sets the pace of trying to update the covariance structure of proposals. The default of 200 is somewhat conservative and you may want to decrease it. The adaptFactorExponent also impacts the schedule of self-tuning.
Block sampling typically only has potential to improve on scalar sampling if the posterior correlation is sufficiently high. Otherwise scalar sampling will do just as well or better.
A final consideration is whether the nodes being blocked share their dependencies or have different dependencies. If they share their dependencies, then the computational burden is not much more than scalar sampling. But if they have very different dependencies, then the computational burden will be more than either alone (because it must calculate dependencies of all nodes in the block).
Also it is useful to be deliberate about whether you remove the default scalar samplers that might have been assigned to nodes when you add a block sampler, or whether you keep both.
Finally, we have recently put a package on CRAN called 'compareMCMCs' that can help manage the workflow for such projects. I hope it is useful.
Perry