API / CoW: constructing DataFrame from DataFrame/BlockManager creates lazy copy
- [ ] closes #xxxx (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.

Checking if everything passes
This replaces https://github.com/pandas-dev/pandas/pull/50499? If ci passes everywhere, e.g. I did not miss anything, yes. Wanted to keep the other pr open until a run is through here Looks good I think I think this is ready as well except the doc comment (I changed the ENH -> API in the title, as for CoW enabled, this is actually a behaviour change (copy=False is the default), not just avoiding a copy where we currently copy) @jorisvandenbossche are you ok here? Merging, we can still address the mgr case before 2.0 is out if necessary Yeah, for the manager case, it might be good to check some benchmarks for this. Although in practice I suppose it will only show up when creating many small DataFrames in some operation, so not sure what a typical use case would be where this would be a significant issue.