Hey
On issue 5 - I'm more worried about managing the role <-> position link rather than the person<->position link. Adding a role to a position will have a big effect on security and should probably be managed appropriately.
On Issue 2: I've done one where there was a separate read from HCM for the positions. You need this as you'll have to set up positions that have no one in them. If you just rely on MX_FS_POSITION_ID you'll only see the position when its populated. Its probably easier to manage the mapping in IDM given that all your role data is there and you already have a UI for assigning it to things. You can create roles with a different naming standard (eg: POSITION:... rather than ROLE:...) or create a new object (although the built in display stuff doesn't work so well for this, like MX_ASSIGNMENTS). Then you can have workflows built which allows the assignments of roles -> positions with security etc in IDM.
On Issue 3: One place had a custom evaluation path as well as operation types. It was a while ago and I can't give a full evaluation but it is an HCM problem. They will need to provide some manner of identifying the changes. It may require multiple data items (dates, flags etc)
Peter