Unity Shader and layers

I suppose in short what Im trying to do is apply a shader to everything but specific objects.

My first attempt was how I would normally do a FPS weapon, a second camera that shows only that object’s layer with depth only. This works fine aside from the problem that the object now appears over the top of everything, like visible through walls.

This makes perfect sense for what I setup, but how do I play with Unity’s camera and layer and stuff to do what I want?

For example, say I had a sepia tone filter on my main camera and does not render the layer of special objects, I add a second camera that only shows that special layer and is set to depth only. This shows that object without the sepia tone, but since its drawn over the main camera, the object is never obscured.

I might have misunderstood, but surely the solution is not additional cameras or layers, but to apply the shader to a material only used by the objects in question? If this is for a temporary effect, you might find it helpful to render with replacement shaders: Unity - Manual: Replacing shaders at runtime