Have the Fn on the keyboard be an "emulated hardware Fn". It can and needs to always be "Fn".
Have the Fn on the shoulder be an "emulated software Fn". It can and needs to change definitions to joystick buttons.
...
Would that work?
Seems like a bad idea to me. If the buttons behave so fundamentally different, they should not be called the same.
This way you are just introducing another modifier key which you map, by default, to Fn-like behaviour.
I'm not yet sure how, but I'm confident we can find a better solution than this.