I'm afraid I don't follow. Why would self-employment or low wages make it more challenging to sign up directly rather than through an exchange?
I'm not proposing any changes to the subsidies. Simply remove the requirement to go through an exchange to get the subsidy.
In the former situation, some people just cannot afford it.
In the latter situation, you can have some fraud (by the insurance companies).
I guess they could offer both options, and if you choose the latter, you need to apply through the government, so they can verify that you exist, etc.
Just do a random spot-check of all the policyholders that the insurance company is claiming a subsidy for. If the amount claimed is more than x% over the amount calculated by the government, then the insurance company gets cut off.
Right now, by forcing people to buy on-exchange to get the subsidy, we're essentially doing the spot-check interactively. This is putting tremendous load on the healthcare.gov back-end. There's no reason this couldn't have been done as a batch process instead.