I think it might be necessary to point out what a "fool" is the ancient near eastern culture in which the Bible was written. In culture in which Jesus was ministering, a "fool" was a social pariah.
A "fool" was a person who lived in a manner that was detrimental to the community and which might bring down the judgment of God upon the community as a whole. Everything was centered on one's family, one's clan or tribe and the community as a whole. You derived your honor from being a person who obeyed the Lord and lived for the good of the community.
In the story of the Prodigal Son, Jesus gives us a very good example of how a person in the ancient near east would have defined a "fool." The prodigal who wanted his share of the inheritance to spend on his own lusts and desires who basically, by his actions, said he wished his father was dead, and set out on his own to do his own thing is a perfect biblical picture of a "fool."
The rugged American individualism that we take for granted in our culture would have been anathema in the days of Jesus' earthly ministry. You don't live for yourself, but for the family and the tribe. That was the mindset of that part of the world.
So when Jesus said not to call someone a fool, he was speaking in the context of slander. To call someone a fool meant to accuse them of living a lifestyle that was contemptuous and would bring down the judgment of God. To call someone a fool was to say they were threat and liability to the entire community and in many cases, such a person was cut off from the community in order to hopefully prevent the judgment of God.
Jesus in Matt. 5:22 is referring to a false accusation. To falsely refer to someone as a food, accusing them of living in rebellion is slander and slander was punishable in God's eyes upon pain of going to hell. Pretty stout stuff.
To refer to someone today as a fool because they live foolishly isn't what Jesus was referring to.