Aha! I have discovered my issue. Signals was the approach I was using but for the life of me I couldn't figure out what the problem was, and I'm rather embarrassed to admit it was very simple! Sadly simply an issue of poor casing resulting in "stringName" instead of "StringName". Safe to say I'm a little red in the cheeks but these things happen!
For anyone in future who wishes to hook code up in C# using Godot's Animation Player Animation Ending event, here you go! (The following all within your class...)
private AnimationPlayer animPlayer;
public override void _Ready()
{
animPlayer.AnimationFinished += (StringName animName) =>
{
// Your logic here! You can use the "animName" variable now to fetch the name of the animation that
// has just finished, using if statements or what have you for your desired effects
}
}
I'm kinda glad my issue ended up being something so easy to fix, if somewhat embarrassing I didn't notice after pouring over this for two days haha. Thanks XYZ for looking it over!