You are on the right track, I think, with utilizing 2 viewports. You will also want to use the CanvasLayer node to help you draw them in the correct order. This is what the hierarchy would look like:
Root
├── CanvasLayer (Layer 0)
│ └── SubViewportContainer (Pixelated) # Pixelated objects
│ └── Viewport
│ └── PixelatedObjects (all objects that need pixelation)
└── CanvasLayer (Layer 1)
└── SubViewportContainer (Non-Pixelated) # Non-pixelated objects
└── Viewport
└── AnimatedSprite3D (and other non-pixelated objects)
Hope this helps.