In short, I have 4 Substance sample inputs that Lerp together using a packed mask that contains a black and white mask each on RGB and a metallic mask on A. Metallic amount is driven by a multiply and a float, Smoothness is its own single float, and each Albedo map has a color input that can be multiplied on top of it for simple color adjustments. Substance Sample is used to conveniently keep Albedo and Normal tiling together and within the material itself I can plug in any texture maps I want.
The masks end up looking like this, saved as a .tif with alpha. Each channel is just a B&W mask that drives one of the Substance Sample inputs and the Alpha channel controls the metallic mask, if it needs metallic at all. Things that don't require a mask for Metallic, either because they have none or the whole thing is metallic, are just driven through the Metallic slider. Pretty straightforward there.
I have to rename and re-organize things through a text editor because it only wants to accept the names of the base Substance Sample (and for some reason blank Substance Samples don't work? Only have Albedo) and organizes them alphabetically. A bit annoying because it overrides those names every time I save the shader.
Now, what I want is to take the existing graph I have and, here's where I'm stuck, have another Texture Sample for a dirt/grunge that I can overlay on top of the albedo with a slider to adjust how much dirt there is. I don't want the grunge texture to be a solid color on top of the albedo, it needs a mask to break it up and allow the existing textures to be seen through it. Adjusting both how MUCH dirt there is AND the opacity of the dirt itself.
For example, this Substance material that I have has a slider for patina on this metal, and it goes from zero grunge to 100% grunge. I don't need something that adjusts the mask's coverage like this example, just a slider where 0 = no grunge, .5 = 50% opacity grunge, and 1 = 100% opacity grunge.
I hope that helps explain what I'm trying to do! So far nothing has really given me the results I want. It seems like something that should be pretty straightforward, and it certainly is with other shader options like Substance Designer. I feel like I'm either missing something or what I want sounds easier on paper than it is in practice.