As a best practice, there should not more than 100 items under any node in Sitecore, Since Media in Sitecore are also store as Items so it is applicable for Media library as well. If you have more than 3000 media items under a single node then definitely it should restructure.
Now come to the point of bucketing, creating bucket is an option in your case but I personally don't think it a good option because you will need to update the system template for this and changing a system template is not a good practice.
But yes, you can structure the items based on the item name creating media folder structure with item name's initial 3-4 characters. such as if your media item name is "John-profile" folder structure will be like J > O > H, similar to the bucketing but folder type will be Medial folder. You can use PowerShell script for this of can write your custom C# code.
For newly created items you can write your event handler for
item:created event. There is an old question on Sitecore 6.6 but this discussion is applicable for current Sitecore version as well - https://stackoverflow.com/questions/19838143/avoiding-100-item-limit-in-the-media-library