text: Title: `dataframe.read_parquet` crashed with DefaultAzureCredential cannot be deterministically hashed
  Body: <!-- Please include a self-contained copy-pastable example that generates the issue if possible.
  
  Please be concise with code posted. See guidelines below on how to provide a good bug report:
  
  - Craft Minimal Bug Reports http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports
  - Minimal Complete Verifiable Examples https://stackoverflow.com/help/mcve
  
  Bug reports that follow these guidelines are easier to diagnose, and so are often handled much more quickly.
  -->
  
  **Describe the issue**:
  Dask 2024.2.1 version in python 3.9 works as expected.
  
  Dask 2024.12.0 version in python 3.12 crashed with 
  ```
    File "/home/user/conda-envs/dev-env/lib/python3.12/site-packages/dask/utils.py", line 772, in __call__
      return meth(arg, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/user/conda-envs/dev-env/lib/python3.12/site-packages/dask/tokenize.py", line 159, in normalize_seq
      return type(seq).__name__, _normalize_seq_func(seq)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/user/conda-envs/dev-env/lib/python3.12/site-packages/dask/tokenize.py", line 152, in _normalize_seq_func
      return tuple(map(_inner_normalize_token, seq))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/user/conda-envs/dev-env/lib/python3.12/site-packages/dask/tokenize.py", line 146, in _inner_normalize_token
      return normalize_token(item)
             ^^^^^^^^^^^^^^^^^^^^^
    File "/home/user/conda-envs/dev-env/lib/python3.12/site-packages/dask/utils.py", line 772, in __call__
      return meth(arg, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/home/user/conda-envs/dev-env/lib/python3.12/site-packages/dask/tokenize.py", line 210, in normalize_object
      _maybe_raise_nondeterministic(
    File "/home/user/conda-envs/dev-env/lib/python3.12/site-packages/dask/tokenize.py", line 89, in _maybe_raise_nondeterministic
      raise TokenizationError(msg)
  dask.tokenize.TokenizationError: Object <azure.identity.aio._credentials.default.DefaultAzureCredential object at 0x7fb2dad44d40> cannot be deterministically hashed. See https://docs.dask.org/en/latest/custom-collections.html#implementing-deterministic-hashing for more information.
  ```
  
  Note that in the following example if i replace `storage_options` by `filesystem` it works. 
  ```python
  from adlfs.spec import AzureBlobFileSystem
  filesystem = AzureBlobFileSystem(
      **storage_options,
  )
  ```
  
  **Minimal Complete Verifiable Example**:
  
  ```python
  import pyarrow as pa
  import dask.dataframe as dd
  from azure.identity.aio import DefaultAzureCredential
  
  DEV_PA_SCHEMAS = pa.schema([
      ('dev_code', pa.string()),
      ('dev_value', pa.float64()),
  ])
  
  storage_options = dict(
      account_name='my_azure_blob_storage_name',
      credential=DefaultAzureCredential(),
  )
  
  d = dd.read_parquet(
      [
          'az://my-container/2024-12-17/file1.parquet',
          'az://my-container/2024-12-17/file2.parquet',
      ],
      filters=None,
      index=False,
      columns=['dev_code'],
      engine='pyarrow',
      storage_options=storage_options,
      open_file_options=dict(precache_options=dict(method='parquet')),
      schema=DEV_PA_SCHEMAS,
  )['dev_code'].unique().compute()
  ```
  
  **Anything else we need to know?**:
  
  **Environment**: Azure Kubernetes pod
  
  - Dask version:  2024.12.0
  - Python version: 3.12.8
  - Operating System: Ubuntu 22.04
  - Install method (conda, pip, source): conda
  - Pandas version: 2.2.3
  - Pyarrow version: 18.1.0
  