I am very embarrassed, just circling back to share the solution for the community (I'm an idiot).
The above workflow works perfectly. My problem was that I had an incorrect "vout" value in one of my inputs. Basically I was trying to spend money I don't have (/facepalm). As soon as I corrected that, everything worked flawlessly.