I am doing a lot of object copy/pasting, but I want the new copies to just use the same material/texture as the original. Is there a way to prevent Blender from automatically duplicating the material for the new copy?
Copy-pasting is a operating system level tool provided as a convenience for quickly transferring data between different software or environments, not something you would regularly use inside an application as part of its native workflow.
It should be used carefully and exclusively when required between different files, rarely within the same file.
It can lead to all sorts of issues, some of which you already encountered, like material duplication, losing datablock sharing, breaking child/parent relationships, among others.
If you are duplicating objects within a scene the correct workflow is to use Blender builtin operators, like object duplication with ⇧ Shift + D (independent copy of the original), object cloning with Alt + D (clone sharing object data) and linking with Ctrl + L.
Between different files, the recommended workflow is to either use linking or appending.
On a technical note, copy-pasting from a 3D Scene in Blender using the system clipboard automatically creates a new temporary file on disk, with the copied content written to it. Pasting then appends from that file and as such it is effectively bringing in objects from a new file, breaking any relationships to the current one it may have had.
It also has all the overhead associated with writing a file to disk, which may be slow if the amount of data is large or the disk is slow, and reading it back into memory, which is largely inefficient compared to just duplicating in scene.
Copy/pasting acts more or less like a File > Append, resulting in added materials. If you Duplicate the object using Shift + D instead, materials won't be duplicated.