You seem to put a lot of weight on the idea that Joshua does not condemn Rahab when Rahab sinned - all he does is mention her blessing! I don't have the time right now to deal with that significant point at this moment, but I do want to briefly touch upon your second point which I take to be the statement "Ignorance is no excuse."
This is true only for the non-elect - not for the elect. Are there sins in your life that you are "ignorant" of and yet God blesses you? Could not Rahab have been walking in just the same kind of way? The apostle Paul writes:
Who was before a blasphemer, and a persecutor, and injurious: but I obtained mercy, because I did it ignorantly in unbelief (1 Timothy 1:13b)
Paul was justified not because he was doing good - but because of Grace. Rahab, also, was saved by Grace and not her works. Her works, as you so clearly point out, merely showed her salvation.
This brings us to a related point - James does not say that she was justified because she lied. James 2:25 reads:
...when she had received the messengers, and had sent them out another way?
James omits her lie - her faith was shown in her "receiving" the messengers and "sending" them out a different way then their pursurers had taken. Her lie is omitted because it was a sin and God had forgiven her for it "There is now no condemnation to those who are in Christ Jesus...". That may be, in part, why Joshua does not repudiate her because of her sin.
I have to go now - I must needs finish this later - but I think you can see the general tendency in the way that I am going.
Take care and God bless bro!
-Rob