All your non-terminal positions have the same score of 0. Take a closer look at pre-terminal positions, that is, those where one move can lead to instant winning.
Try, for instance, to score +1 for each winning move you have in the position, and -1 or -2 for each winning move the opponent has in the position. This will make the algorithm more readily prune branches where opponent has many ways to win and you have few.
Counting immediate winning moves should be fairly cheap. Of course, this is basically a built-in step of descent, so your descent depth would be effectively one more. You can decrease the initial allowed depth.