Add a listener like so:
TweenAlpha tween = TweenAlpha.Begin(gameObject, duration.toValue);
EventDelegate.Add(tween.onFinished, test, false);
The last parameter specifies what happens with the function after it's executed once. "True" means it's only executed once (so it gets removed after execution). "False" means it's kept in the list, and will be able to execute again in the future.
I would suggest you to set up a tween as you want it in inspector (which you seem to be doing?), and not modify it inside your Fade function. Why set the "from", "style", and "animationCurve"? The "from" is always the current value by default, and the other two are derived from values set in the inspector.
You're basically confusing two ways of doing things... if the tween is present, you activate it using the PlayForward() function. If the tween is not present, there is no point in keeping the "activePlayerHUDAlpha" variable at all, and you can create it by using TweenAlpha.Begin, as per my code example above. Note how it returns the reference to the created tween.