How to deal with too many folders in asset source?
As you have deduced, Assets have a fair amount of javascript attached to each folder and file to deal with all the dragging and dropping. To save resources, a folder gets initialized only when it becomes visible. So, if you're exposing a thousand of those folders at the same time, the JS engine will take quite a hit and consume huge amounts of resources. 

In my experience, a good way of mitigating is dividing the subfolders by years and months. Since an entry might not have a post date yet when it's being edited and the post date might change over the course of an entry's lifetime, the path I've come to rely on is {dateCreated|date('Y')}/{dateCreated|date('m')}/{slug}.

Also note that if this is being used in a Matrix block, you'll have to prefix all those variables with owner.