I want to license them in a way that prevents others from publishing derivative works under completely different names in order to make sure that they stay visibly connected to my original work.
This seems to me to be a confusing and ineffective way to accomplish this goal. Suppose you name your software "Foobaz" and license it in the way you describe.
Other works with the exact same name aren't "visibly connected" to your original project -- they're now direct competitors for your project's name! It is slightly more difficult for a fork of Foobaz to succeed, since it cannot have its own distinguishing name, but if it does succeed, then that is bad for your project. The identifier "Foobaz" will be primarily useful in referring to whichever fork is most popular, whether that ends up being your project or, e.g., Microsoft's much more famous fork of your project. Now the name of your project is stuck being shadowed by the more popular version.
If someone uses a few lines of code from your project, do they have to name it after your project? If someone packages a few lines of code into a library, and then several downstream projects include that library, do the library and project all share your project's name? This sounds disastrously confusing, though if your intent is exactly to deter such downstream use via the threat of overwhelming confusion, that might work fairly well.
I expect this would be generally disallowed for a trademarked name under United States trademark law. The entire point of a trademark is to identify the source of goods or services, whereas you are requiring people to use your name is such a way that it directly obscures the source of the software: when there are a dozen different programs called "Foobaz" by a dozen different authors, the name "Foobaz" no longer carries any identifying weight about a particular program's authorship. This is antithetical to the purpose of a trademark, and so the name would be ineligible for trademark protection. This only means, however, that you can't register your name as a trademark (or defend it as an unregistered trademark), and that's probably not an issue for you, considering your intent to grant universal permission to use the name for any software that uses some portion of your code.
- For a case involving insufficient regulation of trademark licensees by the trademark owner, see Dawn Donut Co. v. Hart's Food Stores, wherein Dawn Donut Company could not enforce trademark control over donuts sold in supermarkets, when Dawn only sold the donut mix and enforced no quality control over the final sold product.
It seems like a much better option would be to rely on terms that require mention of the original project. This is effectively what the Apache 2 license does via a NOTICE file, which can include legal notices and must be preserved in a readable format in downstream distributions.