So, the first thing you say is that the fault is with LJ because she was inattentive. We know that LJ didn't realize it was a foul, but we don't know whether or not JB knew it was a foul. If JB did not know it was a foul then she was also inattentive. Do you think that means that she is partly at fault in that case? If not, why is LJ's inattentiveness a problem, but not JB's?
I think the reason most people believe this situation is somehow a violation of ethics is because they think the fair outcome would be that JB be rightfully punished for her foul, and they think that means both players should be responsible for making sure the "fair" outcome is what takes place.
It's in our human nature to want things to be fair (as long as it doesn't go against our own self-interest that is). If someone gets a bad roll, we say they didn't deserve it. If a ball skids and causes a missed shot, that isn't fair either, but the game goes on.
In 8ball where you must call the 8, a player is shooting the 8, which is sitting in the pocket. The player makes the 8 without calling it. Everyone would agree that the player should have won the game, and it's not really fair they lost because of a technicality. Does that mean it was the other player's responsibility to act against their own self-interest and intervene to make sure the shooter calls the 8-ball, so that the game itself is "fair"? Of course not. The fault lies with the player who failed to call their shot, even though they knew it was part of the rules.
The same logic applies to this situation. Both players saw the same shot happen. It is not JB's responsibility to make sure the "fair" outcome happens. Nothing in the rules says that just because a foul occurred, ball in hand must take place. The player has a right to take ball in hand, but if they make a mistake by not recognizing that the shot they just saw was a foul, how is there an obligation on anyone else to correct that mistake? It's their fault and no one else's.
The second thing you say is that "She didn't lie, or prevent Loree Jon from taking ball in hand." Well, if she did know it was a foul, and didn't say anything, then she certainly did prevent LJ from taking ball in hand, since LJ did not know it was a foul, and had JB told her it was a foul, then she would have taken ball in hand. Not telling your opponent that you fouled, when you know you fouled and it's clear that your opponent does not know that you fouled, is a kind of lie of omission.
That's like saying if a player gets up and shoots the 2 ball when the 1 ball is still on the table, the other player prevented them from shooting the 1 because they didn't let their opponent know they were on the 1 ball. The foul was obvious to everyone in the room. If Loree Jon watches the shot that was clearly a foul and fails to recognize it's a foul, that's her fault, just as if she were to step to the table and fail to recognize that the 1 is on the table, so she shoots the 2. JB has no responsibility in this situation, unless the rules clearly state otherwise.
On the other hand, if she didn't know that she fouled, then I contend that she should have known, especially given the fact that she was the only one at the table.
She was the only one at the table? Loree Jon was right next to the table watching the shot. Loree Jon could see the balls rolling after contact just as well as JB. So you are making my case for me. You should contend that Loree Jon should have known it was a foul, and since she is the one who stands to benefit from taking ball in hand, and she is the one physically responsible for picking the ball up, it's her fault that ball in hand didn't take place. It's not JB's responsibility to step in at that point.
To see why, imagine the same situation, but one in which the cueball is coming to a stop just as it gets near the cushion. In that case it may be impossible for your opponent to know whether or not the cueball reached the cushion, because they weren't close enough to see it. Without a referee, the shooter is the only one in a position to say whether or not it is a foul. If I understand your view, though, if the cueball did not actually reach the cushion then the shooter has no ethical obligation to tell their opponent that they fouled. Is that right?
First of all, the shooting player is not necessarily going to be able to see whether or not the cue ball hit the rail any easier than people watching next to the table. If the shooter happens to be standing at the rail in which it takes place, then yes, maybe.
Secondly, the player sitting down next to the table can at least see that it's a close call whether the cue ball hit the rail or not, so they should ask the shooting player if it was a foul. The shooting player has a responsibility to be honest, but they don't have a responsibility to intervene with their opponent's turn at the table to make sure their opponent knows they have a right to ball in hand.