ENH: Use circular weakref to delay copy in setitem
- [ ] xref #48998 (Replace xxxx with the GitHub issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

This PR uses a circular weakref between the added block in the DataFrame and the original block from the Series, when doing setitem in a DataFrame with a Series (haven't fixed other cases yet, wanted to get feedback on whether I'm on the right track).

With this way, whoever modifies the data first will have to copy the data, and we can delay the copy in ``__setitem__``.

cc @jorisvandenbossche @phofl for feedback. This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this.