The one problem I encountered with cloudflare is that they don't allow you specify none cloudflare NS.
This presents a problem if you want to have redundant, cross provider DNS.
In our case, we could still specify a cross-provider mix of NS records at our registrar, but it seems like it doesn't take affect until the TTL on the cached NS records expires. So - this left us with a failover, but not really a graceful one.
I've had that experience (with Cloudflare in general, not DNS). My average response times as measured by Google webmaster tools went from 30ms to 300ms, if I remember correctly. This way ~18 months ago though, so I don't know if it has changed.
And it's to be expected to be slightly slower, at least for dynamic requests, since it's a reverse proxy. I doubt it's limited to the free tier.
I've used the DNS for a few years without any issues whatsoever, so I'd recommend them for that.