I think you've misunderstood what the point of bindless is, and how it creates optimizations.I hope they extend the bindless idea to textures/samplers etc. and remove the need for texture units at all.
Bindless (as far as vertex attributes go) works as a performance optimization because of cache issues. When you render a scene in a game, you have to go through every object in an arbitrary order, bind everything to the context, and render. When you bind a buffer object name for the purpose of rendering, the driver has to convert this name into an actual object pointer, then fetch the actual GPU address from this object (because buffer objects have state other than just an object pointer). Each memory access is almost guaranteed to be a cache miss, since the last time this memory was accessed was on the last frame (and the entire game logic loop has likely run since then, thus emptying the cache).
The key that makes bindless work for vertex attributes is that the only state you need for rendering is the GPU address. So if the application stores the GPU address, the driver doesn't need to do any memory accesses at all. Outside of actually putting that GPU address in the graphics FIFO, of course.
This is not the case for sampler objects or texture objects. Sampler objects contain only state; a pointer to the object would only save you one cache miss at best. Texture objects have a GPU address of the textures, but even then, they have crucial state associated with it that the texture accessing unit needs to know (the range of available LODs). So again, you need to read from the actual texture object.
As for "removing the need for texture units", why would you want this? All that means is that you have to bind textures and samplers to programs instead of the context. And binding to the context is faster.
There are effectively 3 kinds of textures: global textures (textures like shadow maps that are used for all objects in a scene), instance textures (the textures for a particular mesh that uses a particular program), and program textures (textures that must be used with a particular program. Lookup tables that don't change between users of a program). Trying to make everything into a program-local texture is not helpful.
If I want to change what the global texture is currently, I know what texture unit index I assigned it. So I can just bind a different texture there and every program I use from there on will use it. Under what you're wanting, I must go through every program and change what texture they use.
With per-instance textures, under the current scheme, I can pre-assign the diffuse texture to texture unit 0, the specular map to texture unit 1, etc. And as long as I set all of the program sampler uniforms correctly, I never have to change the sampler uniform state when rendering different models with the same program. Under your system, with GLSL assigning uniform locations, for each program I use, I have to store what uniform location the diffuse, specular, etc texture is and bind them to that location.
So no: textures and samplers are fine as is.



...Oh, wait. Those were obsoleted in GL 3.0. And they're very time consuming to build, rendering them useless for run-time built/loaded geometry.