Slicing Series takes from sparse DataFrame with missing values slow
#### Code Sample, a copy-pastable example if possible

```python
import pandas as pd
import numpy as np
import time
import tabulate

def timeIt(df, rangeExact, rangeApprox):
    start = time.time()
    df["A"].loc[rangeExact[0]]
    end = time.time()
    times = {"select exact label": end-start}

    start = time.time()
    df["A"].loc[rangeExact[0]:rangeExact[1]]
    end = time.time()
    times["slice exact label"] = end-start

    # With approximate labels no select is possible -> KeyError

    start = time.time()
    df["A"].loc[rangeApprox[0]:rangeApprox[1]]
    end = time.time()
    times["slice approximate labels"] = end-start
    return times

# Data
nn = 10**7
df = pd.DataFrame(np.random.rand(nn, 2), index=np.linspace(0.1, 99.1, nn), columns=("A", "B"))
offIndexSeries = pd.Series(np.random.rand(int(nn/4)), index=np.linspace(0.10002345, 99.10002345, int(nn/4)), name="C")
dfWithOffIndex = pd.concat([df, offIndexSeries], axis=1)
rangeExact = (df.iloc[4].name, df.iloc[58].name)
rangeApprox = [v + 0.00034 for v in rangeExact]

print("--- DATA ---")
print(dfWithOffIndex.head())

# Experiments
cases = {}
cases["dense dataframe no offIndex"] = timeIt(df, rangeExact, rangeApprox)
cases["dense dataframe with offIndex"] = timeIt(dfWithOffIndex, rangeExact, rangeApprox)
cases["sparse dataframe no offIndex"] = timeIt(df.to_sparse(), rangeExact, rangeApprox)
cases["sparse dataframe with offIndex"] = timeIt(dfWithOffIndex.to_sparse(), rangeExact, rangeApprox)

# Table
print("--- RESULTS ---")
headers = ["↓: case    →: operation"] + [k for k in list(cases.values())[0]]
rows = [[caseName] + [v for k, v in case.items()] for caseName, case in cases.items()]
print(tabulate.tabulate(rows, headers=headers))

# Faster way
print("--- ALTERNATIVE ---")
start = time.time()
df["A"].to_dense().loc[rangeApprox[0]:rangeApprox[1]]
end = time.time()
print(f"when converting to dense first: {end-start}")
```
#### Problem description

When a DataFrame contains Series with different indices (missing values for certain cells - called case "withOffIndex" below) slicing becomes orders of magnitude slower, when the DataFrame is spase, compared to dense. See the test results below. Converting the Series into the dense representation before slicing seems to give consistently better to much better results (including the time required for the conversion). At least in the range between 10^2...10^7 rows (tested - results below for 10^7).
Since missing values make sparse dataframes shine this is somewhat painful.

```
--- DATA ---
                 A         B         C
0.100000  0.217638  0.034994       NaN
0.100010  0.584343  0.823189       NaN
0.100020  0.315356  0.926022       NaN
0.100023       NaN       NaN  0.192552
0.100030  0.246858  0.310810       NaN
--- RESULTS ---
↓: case    →: operation           select exact label    slice exact label    slice approximate labels
------------------------------  --------------------  -------------------  --------------------------
dense dataframe no offIndex              0.00120592           0.000380039                 0.000725031
dense dataframe with offIndex            0.0456889            0.000464201                 0.000380278
sparse dataframe no offIndex             0.00103784           0.0166719                   0.0147569
sparse dataframe with offIndex           0.000307083          7.17341                     7.33061
```

#### Expected Output
```
--- ALTERNATIVE ---
when converting to dense first: 0.0004820823669433594
```

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.7.3.final.0
python-bits: 64
OS: Darwin
OS-release: 17.7.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_GB.UTF-8
LOCALE: en_GB.UTF-8

pandas: 0.24.2
pytest: None
pip: 19.1.1
setuptools: 41.0.1
Cython: None
numpy: 1.16.4
scipy: None
pyarrow: None
xarray: None
IPython: None
sphinx: None
patsy: None
dateutil: 2.8.0
pytz: 2019.1
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: None
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml.etree: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
gcsfs: None

</details>
