gh-37925: Fix slow substitution in piecewise symbolic function
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes #12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes #12345". -->
Discussed in https://groups.google.com/g/sage-devel/c/i4b_0ooOxpQ
Before
```sage
sage: f = piecewise([((0,1),1)])
sage: time f(0.1)
CPU times: user 1.51 s, sys: 204 ms, total: 1.72 s
Wall time: 1.33 s
1
sage: time f(0.1)
CPU times: user 75.5 ms, sys: 1.96 ms, total: 77.5 ms
Wall time: 76.3 ms
1
sage: time f(0.1)
CPU times: user 75.3 ms, sys: 1.83 ms, total: 77.2 ms
Wall time: 76.1 ms
1
```
After
```sage
sage: f = piecewise([((0,1),1)])
sage: time f(0.1)
CPU times: user 1.5 ms, sys: 80 µs, total: 1.58 ms
Wall time: 1.58 ms
1
sage: time f(0.1)
CPU times: user 280 µs, sys: 1e+03 ns, total: 281 µs
Wall time: 286 µs
1
sage: time f(0.1)
CPU times: user 276 µs, sys: 18 µs, total: 294 µs
Wall time: 300 µs
1
```
### :memo: Checklist
<!-- Put an `x` in all the boxes that apply. -->
- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation and checked the documentation
preview.
### :hourglass: Dependencies
<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - #12345: short description why this is a dependency -->
<!-- - #34567: ... -->
URL: https://github.com/sagemath/sage/pull/37925
Reported by: Kwankyu Lee
Reviewer(s): Travis Scrimshaw