I want an arrayed object to be upright throughout a tapered spiral
I don't think you're doing anything funky.. 

The simplest way I can think of to persuade Blender to  respect the Normal, but ignore the Tangents of your curve is as follows:


In its Data tab > Shape panel, set the curve's Twist Method to 'Z Up'
Just as you have already, make a planar object, and give it array and curve modifiers:





As before, it tilts, but we're going to use it as a particle emitter, so it won't matter
Give this placeholder/emitter a Particle System with settings as follows:





All particles are emitted on frame 1
The same number of particles as the array count, evenly distributed, 1 per face.


And: ( my rendered object is called 'Mount')...




... emitting instances of your actual object, aligned to the emitter's Normal (but not its tangent axes)
The emitter planes are not shown in the final render... In my build, the viewport display sometimes needs kicking to refresh.. moving the current frame off 1 and back again does the trick.


This picture of the result also shows the working orientation of the green rendered mesh, with respect to its own object's local axes.. (adjust in Edit Mode)