What is/are the cause(s) of share rejection?
They are either invalid (bad hash of good data) or stale (good hash of bad data)
When a block is found any share you are working on or submitting is no longer worth anything. They are stale. If you push GPU too hard it will make mathematical errors producing invalid hashes.