driver: re-use fences

Keep fences in a freelist, and re-use them when possible. This
avoids having to burden the kernel with creating new ones all the
time.