1 and 2 looks a lot like transposition tables and pruning techniques used with success in chess engines. I was trying to find something similar in robocode for months, but failed.
You can cache square roots in 3 and only need to recalculate them when wave log is updated.