BUG: incorrect type when indexing sparse dataframe with iterable
closes #34526
closes #34540 
- [x] 2 tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

The problem arose when indexing with an iterable.  If the result consisted of columns which originally only had sparse values, the `dtype` was solely inferred from the `fill_value`, which defaults to `0`.  Hence, the resulting columns have the dtype ` Sparse[int64, 0]`.   This commit changes the type inference logic to use the numpy type promotion rules between the underlying subtype of the `SparseArray.dtype` and the type of the fill value.