I think that I might have come up with a solution that would satisfy everyone except the cheaters: Change the way instancing works, just a little. I'll explain.
Right now, we have a system where players in solo don't instance with any other players. Everyone they see is a game-controlled AI. No Private Group/Open players can see them or interfere with their activities. PG players see only NPCs and friendly players who are members of their PG. No other players can see them or interfere with them. What does this mean? It means that when they are doing things that has an effect on the BGS or Powerplay, players who oppose what they're doing can't stop them the way they can stop someone playing in open - by interdicting them and killing them or stealing their mission cargo with hatchbreakers etcetera.
So, what can be done about this? FDev want players to be able to choose which other players they will interact with, whether no other players, just the players in their PG, or all players who they haven't explicitly blocked. Players who like playing the BGS or powerplay want to have the opportunity to stop these hidden players. There is a way that everyone can have what they want:
When a player enters the game in solo or a PG - or even in open, with other players on their block list - they should instance in Open, but to players who would not currently be able to see them, they would not appear as themselves (CMDR ...), but as an obvious proxy, LT <random name> (where LT stands for Lieutenant). Their radar icon would appear not solid, but not empty either, perhaps with a dot or a bar inside to show that this is a proxy. The player in solo/PG/open-with-block-list would be able to see only those players they expect to see. Player proxies would be visible to other players only in Open. Essentially, the proxy would be controlled by the player until it gets into a fight. The AI proxy would fight with a skill equivalent to the solo/PG player's combat rank, but its first priority would be escape - if that's possible.
The first an open player would likely see of such a player proxy would be in supercruise. Whenever a proxy is attacked by a player - whether by weapons or interdiction - the solo/PG player would be removed from the instance, and the game AI would take over the proxy copy of the player's ship in the Open player's instance. As soon as this happened, the proxy's BGS/PP 'stuff' - their commodities, cartographic data and the like - would be tagged with a unique identifier behind the scenes, marking them as being 'At Risk' for BGS/PP purposes.
In solo/PG, the player would be oblivious to this, except for a notification on their comms or status panel that any stuff with a potential BGS impact that they were carrying was now at risk, and gains a mark in the inventory to that effect. Obviously, while the proxy is in combat, it can't also appear in supercruise in its player's place.
If the battle between the Open player and the Solo/PG player's AI proxy resulted in loss of the BGS/PP-sensitive stuff, the solo/PG player's corresponding stuff would be marked as Lost for BGS purposes. Otherwise, if the proxy won/escaped, the At Risk tag would be removed.
Let's suppose that a solo/PG player whose stuff is At Risk tries to sell it or hand it in. When they do so, they would be warned that their stuff is at risk due to player action in Open, and that it might not have any BGS/PP effect. If they do sell/hand in, the at risk identifier stays with their contribution. If the proxy wins/escapes, the tag gets removed and the contributions are counted. If the proxy loses, the contributions are removed and the solo/PG player notified that their contributions had no BGS/PP effect. If the tick happens before the At Risk tag is resolved, it's counted - that's an edge case.
If the proxy loses before its player hands any stuff in, the player is warned that the stuff won't have any BGS effect before they do so, and the stuff is marked in their inventory as being ineligble to affect BGS/PP. This mark stays with the stuff even if it is sold or scooped by another player, and should be a filterable condition for limpets to ignore.
The same would go for players in Open who have blocked other players. They wouldn't see or be able to interact with these blocked players, but would present them with a proxy if they're instanced together. If the blocked player attempted to kill the proxy, their stuff would be at risk and might be lost, but the blocking player would see only anonymous notifications. This would stop a player from flying in Open but blocking everyone unknown that they - or squadron-mates - see so that they turn Open into their own PG by stealth.
This could also be used to deal with combat logging in the presence of other players, both menu logging and dropped connections. If a player tries to menu log when in combat, (or the connection is dropped), the game notifies them that they are at risk and waits (10s IIRC) as usual. During this time, if they are destroyed, it's rebuy time. After this countdown time, their proxy takes over, and they change from CMDR <name> to LT <name>... consider it the time it takes for the AI to take over. If the logged-out player logs back in and their ship is not destroyed yet, they go back from LT <name> to CMDR <name>, get to take over again and continue the fight/flight. If they're destroyed in the other player's instance while logged out after the 10s countdown, when they log back in, they're back in their ship in an empty instance, but their stuff is marked as BGS/PP-Ineligble. If they're destroyed while logged out during the 10s countdown, it's rebuy time. Of course, the AI would try to run if it could, or fight if it couldn't run (not fast enough, FSD disabled etc).
Speaking from my experience as a software developer, this system shouldn't be too hard to code. It would require only small database changes, that there be a temporary unique ID attachable to stuff (commodities and data that can have a BGS effect) to mark it as At Risk, and a flag that says that the stuff is BGS/PP-ineligible or not. It would leverage existing ship AI, and shouldn't require on-foot interactionat all. It would only need a few changes in instancing.
This system would mean that Solo/PG players or even Open players with blocklists wouldn't have to deal with people they don't want to deal with, but Open players would be able to prevent their actions from counting toward the background simulation or powerplay. Solo players would still be able to advance their personal narrative even if their stuff is marked as BGS/PP-Ineligible. Only the cheaters running bots in solo or PG would be particularly inconvenienced. Solo or PG players who want to affect the BGS or powerplay would be encouraged to move to Open, since in my experience, humans tend to become better at fighting in ED than the rate at which their combat rank increases. Huimans are better at avoiding interdiction than the usual human ship AIs.
Finally, with this system in place, it might make sense to have player blocks changed so that they can be "Message Only" blocks or "Message & Instancing" blocks. A player might not want to see another player's messages but doesn't care if they see or interact with that player's ship, or might not want to encounter the other player at all.