IANAL, but my understanding is: Double-billing hours is probably illegal, but many remote programmers likely have two "full time", salaried, jobs with no stipulation about "you must work X hours"... at the very least a legal grey area, and if you breach some contract clause, you are most likely in breach of contract, which is a civil suit, and most likely you'll just be dismissed, no severance will be offered, and they might try to take away any unexercised options grants.
This is not just programmers by the way. I know of people in other professions doing this. And as long as there isn't a conflict based on anything you signed or company policy I'm not sure a company has recourse beyond terminating you
Again, I don't do it because I can't handle the stress of two jobs, but I don't begrudge those who can
Assuming (which is very safe in most cases) that the employment contract has something in it that is being violated by double-dipping, it is both garden variety fraud (in many cases state and therefore dependent on the state laws in question), and in some cases federal depending on the circumstances. In the jurisdictions where fraud against an employer is based on the amount of money at play, it's still almost always going to be a felony because it takes very little time to reach the common thresholds (e.g. $1k) when double-dipping.
Additionally, it's a pretty obvious opening to a lawsuit in at least most jurisdictions for breach of fiduciary duty (under the duty of loyalty -- Google this + your own jurisdiction for more details on what it covers where you are) and breach of contract.
Now, the employer probably won't sue or prosecute in most circumstances, so you may get away with it. But that's some high-stakes roulette, especially since you're not going to get UI if you get fired for gross misconduct and you're not going to get a good recommendation.