A servo is not a better option. If you can find a legal servo (<$75) that has enough torque to lift that arm, let this thread know because I would sure be interested.
A Talon is capable of performing what you would like as long as you connect a form of sensor. Whether you use an absolute or relative encoder determines you’re zeroing procedure. (On robot code init, zero encoder? Or don’t touch it because its absolute). You can pass an arbitrary feedforward into the Talon, like a calculated offset to gravity. For arms, it’s
cos(angle) * volts_to_keep_level.
Tons of teams every year have sensored mechanisms (elevators, arms, drivetrains) and use encoders. I’d say that’s your best bet.