PERF: faster _coerce_to_data_and_mask() for astype("Float64")
- [ ] closes #60066
- [ ] [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
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [x] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [x] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

Use `np.isnan` for floats instead of `libmissing.is_numeric_na`. Also add a fast path for booleans

Prev:
![image](https://github.com/user-attachments/assets/2e76a59f-c5f1-4670-b9cb-3df71b7b34dc)
New:
![image](https://github.com/user-attachments/assets/27ba0f21-a578-4afe-9f5f-2f01a389a17d)


Failures seem unrelated: `FAILED pandas/tests/io/test_parquet.py::TestParquetPyArrow::test_timezone_aware_index[timezone_aware_date_list1] - AssertionError: DataFrame.index are different` The results from asv don't seem as impressive as the results above, guessing the scale of these tests is much smaller.
![image](https://github.com/user-attachments/assets/b5c83eec-b7b4-4ba8-b48f-5c6240a158c2)
 @rhshadrach friendly ping Thanks @auderson 