Custom Passes

I’m trying to create the equivalent of custom render passes. For example, an Albedo pass (replaces all Diffuse and SSS shaders with emission shaders and sets volume shaders to 0 density), a more advanced Normal pass (normal pass, except it accounts for both bump maps and normals through indirect Glossy / Transmission).

I can either have it do this within the materials themselves automatically (probably harder than it’s worth)
-OR-
offset all faces’ material index by n (input in the render-layer?) during the render. This sounds easier than the first option, and also probably allows for much more flexibility and custom render-passes designed by the artist.